summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-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
634 files changed, 186466 insertions, 37851 deletions
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>