summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.svnrevision2
-rw-r--r--COPYING.txt491
-rw-r--r--LICENSE-DUAL.txt59
-rw-r--r--LICENSE-GPL.txt41
-rw-r--r--LICENSE.txt40
-rw-r--r--bin/bbackupd/BackupClientDirectoryRecord.cpp30
-rw-r--r--bin/bbackupd/BackupDaemon.cpp36
-rw-r--r--bin/bbackupd/BackupDaemon.h10
-rw-r--r--bin/bbackupd/BackupDaemonInterface.h3
-rw-r--r--bin/bbackupd/Makefile.extra2
-rw-r--r--bin/bbackupquery/BackupQueries.cpp85
-rw-r--r--bin/bbackupquery/Makefile.extra2
-rw-r--r--bin/bbackupquery/bbackupquery.cpp16
-rw-r--r--bin/bbackupquery/documentation.txt9
-rw-r--r--bin/bbstoreaccounts/bbstoreaccounts.cpp9
-rw-r--r--bin/bbstored/BBStoreDHousekeeping.cpp3
-rw-r--r--bin/bbstored/BackupStoreContext.cpp55
-rw-r--r--bin/bbstored/BackupStoreContext.h5
-rw-r--r--bin/bbstored/BackupStoreDaemon.h11
-rw-r--r--bin/bbstored/HousekeepStoreAccount.cpp151
-rw-r--r--bin/bbstored/HousekeepStoreAccount.h17
-rw-r--r--bin/bbstored/Makefile.extra2
-rw-r--r--bin/s3simulator/s3simulator.cpp32
-rw-r--r--contrib/cygwin/README.txt30
-rwxr-xr-xcontrib/cygwin/install-cygwin-service.pl.in112
-rwxr-xr-xcontrib/cygwin/remove-cygwin-service.sh14
-rw-r--r--contrib/rpm/boxbackup.spec40
-rw-r--r--distribution/COMMON-MANIFEST.txt17
-rw-r--r--distribution/boxbackup/DISTRIBUTION-MANIFEST.txt58
-rw-r--r--distribution/boxbackup/LICENSE.txt38
-rw-r--r--distribution/boxbackup/VERSION.txt2
-rw-r--r--docs/Makefile160
-rw-r--r--docs/api-notes/win32_build_on_cygwin_using_mingw.txt2
-rw-r--r--docs/docbook/bb-man.xsl (renamed from docs/docbook/bb-man.xsl.tmpl)2
-rw-r--r--docs/docbook/bb-nochunk-book.xsl2
-rw-r--r--docs/xsl-generic/VERSION113
-rw-r--r--docs/xsl-generic/common/af.xml1223
-rw-r--r--docs/xsl-generic/common/am.xml1223
-rw-r--r--docs/xsl-generic/common/ar.xml1223
-rw-r--r--docs/xsl-generic/common/autoidx-kimber.xsl43
-rw-r--r--docs/xsl-generic/common/autoidx-kosek.xsl150
-rw-r--r--docs/xsl-generic/common/az.xml666
-rw-r--r--docs/xsl-generic/common/bg.xml718
-rw-r--r--docs/xsl-generic/common/bn.xml1223
-rw-r--r--docs/xsl-generic/common/bs.xml656
-rw-r--r--docs/xsl-generic/common/ca.xml1223
-rw-r--r--docs/xsl-generic/common/charmap.xml185
-rw-r--r--docs/xsl-generic/common/charmap.xsl221
-rw-r--r--docs/xsl-generic/common/common.xml622
-rw-r--r--docs/xsl-generic/common/common.xsl1981
-rw-r--r--docs/xsl-generic/common/cs.xml694
-rw-r--r--docs/xsl-generic/common/cy.xml1239
-rw-r--r--docs/xsl-generic/common/da.xml658
-rw-r--r--docs/xsl-generic/common/de.xml660
-rw-r--r--docs/xsl-generic/common/el.xml1223
-rw-r--r--docs/xsl-generic/common/en.xml1223
-rw-r--r--docs/xsl-generic/common/entities.ent47
-rw-r--r--docs/xsl-generic/common/eo.xml1223
-rw-r--r--docs/xsl-generic/common/es.xml670
-rw-r--r--docs/xsl-generic/common/et.xml1223
-rw-r--r--docs/xsl-generic/common/eu.xml1223
-rw-r--r--docs/xsl-generic/common/fa.xml1223
-rw-r--r--docs/xsl-generic/common/fi.xml664
-rw-r--r--docs/xsl-generic/common/fr.xml684
-rw-r--r--docs/xsl-generic/common/ga.xml1223
-rw-r--r--docs/xsl-generic/common/gentext.xsl831
-rw-r--r--docs/xsl-generic/common/gu.xml1223
-rw-r--r--docs/xsl-generic/common/he.xml1223
-rw-r--r--docs/xsl-generic/common/hi.xml1223
-rw-r--r--docs/xsl-generic/common/hr.xml1223
-rw-r--r--docs/xsl-generic/common/hu.xml1223
-rw-r--r--docs/xsl-generic/common/id.xml1223
-rw-r--r--docs/xsl-generic/common/insertfile.xsl111
-rw-r--r--docs/xsl-generic/common/it.xml1223
-rw-r--r--docs/xsl-generic/common/ja.xml1223
-rw-r--r--docs/xsl-generic/common/kn.xml1223
-rw-r--r--docs/xsl-generic/common/ko.xml1223
-rw-r--r--docs/xsl-generic/common/l10n.dtd63
-rw-r--r--docs/xsl-generic/common/l10n.xml127
-rw-r--r--docs/xsl-generic/common/l10n.xsl441
-rw-r--r--docs/xsl-generic/common/la.xml1223
-rw-r--r--docs/xsl-generic/common/labels.xsl869
-rw-r--r--docs/xsl-generic/common/lt.xml672
-rw-r--r--docs/xsl-generic/common/lv.xml1223
-rw-r--r--docs/xsl-generic/common/mn.xml724
-rw-r--r--docs/xsl-generic/common/nl.xml1223
-rw-r--r--docs/xsl-generic/common/nn.xml1223
-rw-r--r--docs/xsl-generic/common/no.xml1223
-rw-r--r--docs/xsl-generic/common/olink.xsl1149
-rw-r--r--docs/xsl-generic/common/or.xml1223
-rw-r--r--docs/xsl-generic/common/pa.xml1223
-rw-r--r--docs/xsl-generic/common/pi.xsl346
-rw-r--r--docs/xsl-generic/common/pl.xml1223
-rw-r--r--docs/xsl-generic/common/pt.xml1223
-rw-r--r--docs/xsl-generic/common/pt_br.xml1223
-rw-r--r--docs/xsl-generic/common/refentry.xml781
-rw-r--r--docs/xsl-generic/common/refentry.xsl1277
-rw-r--r--docs/xsl-generic/common/ro.xml1223
-rw-r--r--docs/xsl-generic/common/ru.xml720
-rw-r--r--docs/xsl-generic/common/sk.xml1223
-rw-r--r--docs/xsl-generic/common/sl.xml1223
-rw-r--r--docs/xsl-generic/common/sq.xml1223
-rw-r--r--docs/xsl-generic/common/sr.xml714
-rw-r--r--docs/xsl-generic/common/sr_Latn.xml673
-rw-r--r--docs/xsl-generic/common/stripns.xsl342
-rw-r--r--docs/xsl-generic/common/subtitles.xsl155
-rw-r--r--docs/xsl-generic/common/sv.xml658
-rw-r--r--docs/xsl-generic/common/ta.xml1223
-rw-r--r--docs/xsl-generic/common/table.xsl514
-rw-r--r--docs/xsl-generic/common/targetdatabase.dtd49
-rw-r--r--docs/xsl-generic/common/targets.xsl272
-rw-r--r--docs/xsl-generic/common/th.xml1223
-rw-r--r--docs/xsl-generic/common/titles.xsl740
-rw-r--r--docs/xsl-generic/common/tl.xml1223
-rw-r--r--docs/xsl-generic/common/tr.xml660
-rw-r--r--docs/xsl-generic/common/uk.xml1223
-rw-r--r--docs/xsl-generic/common/utility.xml259
-rw-r--r--docs/xsl-generic/common/utility.xsl290
-rw-r--r--docs/xsl-generic/common/vi.xml1223
-rw-r--r--docs/xsl-generic/common/xh.xml1223
-rw-r--r--docs/xsl-generic/common/zh_cn.xml654
-rw-r--r--docs/xsl-generic/common/zh_tw.xml1223
-rw-r--r--docs/xsl-generic/highlighting/c-hl.xml105
-rw-r--r--docs/xsl-generic/highlighting/common.xsl62
-rw-r--r--docs/xsl-generic/highlighting/delphi-hl.xml174
-rw-r--r--docs/xsl-generic/highlighting/ini-hl.xml43
-rw-r--r--docs/xsl-generic/highlighting/java-hl.xml98
-rw-r--r--docs/xsl-generic/highlighting/m2-hl.xml86
-rw-r--r--docs/xsl-generic/highlighting/myxml-hl.xml131
-rw-r--r--docs/xsl-generic/highlighting/php-hl.xml127
-rw-r--r--docs/xsl-generic/highlighting/xslthl-config.xml11
-rw-r--r--docs/xsl-generic/html/admon.xsl132
-rw-r--r--docs/xsl-generic/html/annotations.xsl169
-rw-r--r--docs/xsl-generic/html/autoidx-kimber.xsl168
-rw-r--r--docs/xsl-generic/html/autoidx-kosek.xsl125
-rw-r--r--docs/xsl-generic/html/autoidx-ng.xsl20
-rw-r--r--docs/xsl-generic/html/autoidx.xsl645
-rw-r--r--docs/xsl-generic/html/autotoc.xsl675
-rw-r--r--docs/xsl-generic/html/biblio-iso690.xsl1300
-rw-r--r--docs/xsl-generic/html/biblio.xsl1228
-rw-r--r--docs/xsl-generic/html/block.xsl434
-rw-r--r--docs/xsl-generic/html/callout.xsl201
-rw-r--r--docs/xsl-generic/html/changebars.xsl100
-rw-r--r--docs/xsl-generic/html/chunk-code.xsl670
-rw-r--r--docs/xsl-generic/html/chunk-common.xsl1886
-rw-r--r--docs/xsl-generic/html/chunk.xsl52
-rw-r--r--docs/xsl-generic/html/chunker.xsl439
-rw-r--r--docs/xsl-generic/html/chunkfast.xsl72
-rw-r--r--docs/xsl-generic/html/chunktoc.xsl468
-rw-r--r--docs/xsl-generic/html/component.xsl401
-rw-r--r--docs/xsl-generic/html/division.xsl228
-rw-r--r--docs/xsl-generic/html/docbook.xsl479
-rw-r--r--docs/xsl-generic/html/ebnf.xsl329
-rw-r--r--docs/xsl-generic/html/footnote.xsl299
-rw-r--r--docs/xsl-generic/html/formal.xsl400
-rw-r--r--docs/xsl-generic/html/glossary.xsl482
-rw-r--r--docs/xsl-generic/html/graphics.xsl1489
-rw-r--r--docs/xsl-generic/html/highlight.xsl54
-rw-r--r--docs/xsl-generic/html/html-rtf.xsl336
-rw-r--r--docs/xsl-generic/html/html.xsl241
-rw-r--r--docs/xsl-generic/html/htmltbl.xsl55
-rw-r--r--docs/xsl-generic/html/index.xsl229
-rw-r--r--docs/xsl-generic/html/info.xsl43
-rw-r--r--docs/xsl-generic/html/inline.xsl1439
-rw-r--r--docs/xsl-generic/html/keywords.xsl35
-rw-r--r--docs/xsl-generic/html/lists.xsl1103
-rw-r--r--docs/xsl-generic/html/maketoc.xsl86
-rw-r--r--docs/xsl-generic/html/manifest.xsl22
-rw-r--r--docs/xsl-generic/html/math.xsl270
-rw-r--r--docs/xsl-generic/html/oldchunker.xsl202
-rw-r--r--docs/xsl-generic/html/onechunk.xsl37
-rw-r--r--docs/xsl-generic/html/param.xsl412
-rw-r--r--docs/xsl-generic/html/pi.xsl1240
-rw-r--r--docs/xsl-generic/html/profile-chunk-code.xsl609
-rw-r--r--docs/xsl-generic/html/profile-chunk.xsl52
-rw-r--r--docs/xsl-generic/html/profile-docbook.xsl411
-rw-r--r--docs/xsl-generic/html/profile-onechunk.xsl37
-rw-r--r--docs/xsl-generic/html/qandaset.xsl389
-rw-r--r--docs/xsl-generic/html/refentry.xsl309
-rw-r--r--docs/xsl-generic/html/sections.xsl622
-rw-r--r--docs/xsl-generic/html/synop.xsl1596
-rw-r--r--docs/xsl-generic/html/table.xsl1120
-rw-r--r--docs/xsl-generic/html/task.xsl76
-rw-r--r--docs/xsl-generic/html/titlepage.templates.xml662
-rw-r--r--docs/xsl-generic/html/titlepage.templates.xsl3622
-rw-r--r--docs/xsl-generic/html/titlepage.xsl1031
-rw-r--r--docs/xsl-generic/html/toc.xsl173
-rw-r--r--docs/xsl-generic/html/verbatim.xsl376
-rw-r--r--docs/xsl-generic/html/xref.xsl1348
-rw-r--r--docs/xsl-generic/lib/lib.xsl480
-rw-r--r--docs/xsl-generic/manpages/block.xsl296
-rw-r--r--docs/xsl-generic/manpages/charmap.groff.xsl5985
-rw-r--r--docs/xsl-generic/manpages/docbook.xsl293
-rw-r--r--docs/xsl-generic/manpages/endnotes.xsl535
-rw-r--r--docs/xsl-generic/manpages/html-synop.xsl1605
-rw-r--r--docs/xsl-generic/manpages/info.xsl630
-rw-r--r--docs/xsl-generic/manpages/inline.xsl190
-rw-r--r--docs/xsl-generic/manpages/lists.xsl368
-rw-r--r--docs/xsl-generic/manpages/other.xsl674
-rw-r--r--docs/xsl-generic/manpages/param.xsl167
-rw-r--r--docs/xsl-generic/manpages/profile-docbook.xsl259
-rw-r--r--docs/xsl-generic/manpages/refentry.xsl256
-rw-r--r--docs/xsl-generic/manpages/synop.xsl305
-rw-r--r--docs/xsl-generic/manpages/table.xsl633
-rw-r--r--docs/xsl-generic/manpages/utility.xsl452
-rw-r--r--infrastructure/BoxPlatform.pm.in4
-rwxr-xr-xinfrastructure/makebuildenv.pl.in19
-rwxr-xr-xinfrastructure/makedistribution.pl.in70
-rwxr-xr-xinfrastructure/makeparcels.pl.in85
-rw-r--r--lib/backupclient/BackupClientFileAttributes.cpp176
-rw-r--r--lib/backupclient/BackupClientFileAttributes.h4
-rw-r--r--lib/backupclient/BackupStoreException.txt1
-rw-r--r--lib/backupclient/Makefile.extra4
-rw-r--r--lib/backupstore/BackupStoreAccountDatabase.cpp7
-rw-r--r--lib/backupstore/BackupStoreAccountDatabase.h4
-rw-r--r--lib/backupstore/BackupStoreAccounts.cpp19
-rw-r--r--lib/backupstore/BackupStoreAccounts.h9
-rw-r--r--lib/backupstore/BackupStoreRefCountDatabase.cpp321
-rw-r--r--lib/backupstore/BackupStoreRefCountDatabase.h128
-rw-r--r--lib/common/BannerText.h2
-rw-r--r--lib/common/Box.h43
-rw-r--r--lib/common/BoxPlatform.h8
-rw-r--r--lib/common/BoxPortsAndFiles.h.in1
-rw-r--r--lib/common/FileModificationTime.cpp64
-rw-r--r--lib/common/FileModificationTime.h48
-rw-r--r--lib/common/FileStream.cpp15
-rw-r--r--lib/common/FileStream.h8
-rw-r--r--lib/common/InvisibleTempFileStream.cpp4
-rw-r--r--lib/common/Logging.cpp23
-rw-r--r--lib/common/Logging.h46
-rw-r--r--lib/common/Makefile.extra4
-rw-r--r--lib/common/NamedLock.cpp9
-rw-r--r--lib/common/NamedLock.h2
-rw-r--r--lib/common/Test.cpp24
-rw-r--r--lib/common/Test.h15
-rw-r--r--lib/common/Utils.cpp12
-rw-r--r--lib/common/Utils.h5
-rw-r--r--lib/compress/Makefile.extra2
-rw-r--r--lib/crypto/Makefile.extra2
-rw-r--r--lib/httpserver/HTTPRequest.cpp23
-rw-r--r--lib/httpserver/HTTPRequest.h18
-rw-r--r--lib/httpserver/HTTPServer.cpp36
-rw-r--r--lib/httpserver/HTTPServer.h10
-rw-r--r--lib/httpserver/Makefile.extra2
-rw-r--r--lib/httpserver/S3Simulator.cpp309
-rw-r--r--lib/httpserver/S3Simulator.h40
-rw-r--r--lib/raidfile/Makefile.extra2
-rw-r--r--lib/raidfile/RaidFileException.txt3
-rw-r--r--lib/raidfile/RaidFileUtil.h2
-rw-r--r--lib/raidfile/RaidFileWrite.cpp62
-rw-r--r--lib/raidfile/RaidFileWrite.h2
-rw-r--r--lib/server/LocalProcessStream.cpp11
-rw-r--r--lib/server/LocalProcessStream.h3
-rw-r--r--lib/server/Makefile.extra4
-rw-r--r--lib/server/ServerControl.cpp1
-rw-r--r--lib/server/ServerStream.h54
-rw-r--r--lib/win32/emu.cpp26
-rw-r--r--lib/win32/emu.h11
-rw-r--r--modules.txt1
-rw-r--r--parcels.txt29
-rw-r--r--test/backupdiff/difftestfiles.cpp1
-rw-r--r--test/backupstore/Makefile.extra1
-rw-r--r--test/backupstore/testbackupstore.cpp269
-rw-r--r--test/backupstore/testfiles/bbstored.conf2
-rw-r--r--test/backupstorepatch/testbackupstorepatch.cpp62
-rw-r--r--test/basicserver/Makefile.extra8
-rw-r--r--test/bbackupd/testbbackupd.cpp19
-rwxr-xr-xtest/bbackupd/testfiles/extcheck1.pl.in8
-rw-r--r--test/common/testcommon.cpp2
-rw-r--r--test/httpserver/testfiles/s3simulator.conf10
-rw-r--r--test/httpserver/testhttpserver.cpp254
-rw-r--r--test/raidfile/testraidfile.cpp25
272 files changed, 125505 insertions, 1025 deletions
diff --git a/.svnrevision b/.svnrevision
index 232941f6..091d5b0a 100644
--- a/.svnrevision
+++ b/.svnrevision
@@ -1 +1 @@
-2502
+2714
diff --git a/COPYING.txt b/COPYING.txt
new file mode 100644
index 00000000..54d27b62
--- /dev/null
+++ b/COPYING.txt
@@ -0,0 +1,491 @@
+Box Backup, http://www.boxbackup.org/
+
+Copyright (c) 2003-2010, Ben Summers and contributors.
+All rights reserved.
+
+The license of the code was changed on 23-Jan-2010 in order to meet the
+Fedora Project's definition of Free Software, and therefore allow inclusion
+in Fedora, Red Hat Linux and CentOS. This also solves a long-standing
+incompatibility with the GNU Readline library that prevented us from
+distributing Box Backup binaries compiled against that library. You can
+review our discussions of the change in the mailing list archives at:
+http://lists.boxbackup.org/pipermail/boxbackup/2010-January/000005.html
+
+Note that this project uses mixed licensing. Different parts of the project
+may be used and distributed under different licenses, as described below.
+The two licenses used are "Box Backup GPL" and a BSD-style license.
+
+Unless stated otherwise in the file, all files in the following directories
+fall under the "Box Backup GPL" license, described below:
+
+bin/bbackupctl
+bin/bbackupd
+bin/bbackupobjdump
+bin/bbackupquery
+bin/bbstoreaccounts
+bin/bbstored
+bin/s3simulator
+lib/backupclient
+lib/backupstore
+test/backupdiff
+test/backupstore
+test/backupstorefix
+test/backupstorepatch
+test/bbackupd
+contrib/bbadmin
+contrib/bbreporter
+contrib/cygwin
+contrib/debian
+contrib/mac_osx
+contrib/redhat
+contrib/rpm
+contrib/solaris
+contrib/suse
+contrib/windows
+distribution/boxbackup
+
+The "Box Backup GPL" license follows:
+---------------------------------------------------------------------
+The Box Backup GPL is based on the GPLv2 (GNU General Public License
+version 2 or later) as published by the Free Software Foundation.
+However, it includes optional exceptions which allow linking with
+OpenSSL and Microsoft VSS, listed below. This means that Box Backup
+is not under pure GPLv2 as published by the Free Software Foundation.
+These are the only differences between the Box Backup GPL license and
+the original GPL from the Free Software Foundation.
+
+Please note that while the Box Backup GPL is similar in spirit to the
+original GPL, it is not fully compatible. Because of these optional
+exceptions, you may not include or combine fully GPL source code
+(such as the GNU readline library) with Box Backup, or distribute the
+resulting binaries, under the Box Backup GPL license, without
+specific permission from the authors of such code. You may do so
+under the pure GPL license, by omitting the optional exclusion clauses
+below, however you may not legally link such code with OpenSSL or
+Microsoft VSS, which may limit the usefulness or functionality of the
+resulting code.
+
+The license exemption section below was based on the license of the
+Bacula project
+[http://bacula.git.sourceforge.net/git/gitweb.cgi?p=bacula/bacula;a=blob_plain;f=bacula/LICENSE;hb=HEAD].
+
+For the most part, Box Backup is licensed under the GPL version 2
+[http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt].
+The sections that follow are optional exemptions to the GPL version 2
+license, that apply to code that is copyrighted by Ben Summers and
+Contributors.
+
+Linking:
+As a special exception to the GPLv2, the Box Backup Project gives
+permission to link any code falling under this license (the Box Backup
+GPL) with any software that can be downloaded from
+the OpenSSL website [http://www.openssl.org] under either the
+"OpenSSL License" or the "Original SSLeay License", and to distribute
+the linked executables under the terms of the "Box Backup GPL" license.
+
+As a special exception to the GPLv2, the Box Backup Project gives
+permission to link any code falling under this license (the Box Backup
+GPL) with any version of Microsoft's Volume Shadow Copy Service 7.2 SDK
+or Microsoft Windows Software Development Kit (SDK), including
+vssapi.lib, that can be downloaded from the Microsoft website
+[*.microsoft.com], and to distribute the linked executables under the
+terms of the "Box Backup GPL" license.
+
+The sections above are optional, and you may distribute the code that
+falls under this license under the original GPLv2 license by omitting
+them. The original GPLv2 license follows.
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
+---------------------------------------------------------------------
+
+Unless stated otherwise in the file or in the list of directories above,
+all files in the following directories are dual licensed under the BSD and
+GPL licenses. You may use and distribute them providing that you comply
+EITHER with the terms of the BSD license, OR the GPL license. It is not
+necessary to comply with both licenses, only one.
+
+lib/common
+lib/compress
+lib/crypto
+lib/httpserver
+lib/intercept
+lib/raidfile
+lib/server
+lib/win32
+test/basicserver
+test/common
+test/compress
+test/crypto
+test/httpserver
+test/raidfile
+test/win32
+infrastructure
+distribution
+
+The BSD license follows:
+---------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the Box Backup nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+---------------------------------------------------------------------
+[http://en.wikipedia.org/wiki/BSD_licenses#3-clause_license_.28.22New_BSD_License.22.29]
+
diff --git a/LICENSE-DUAL.txt b/LICENSE-DUAL.txt
new file mode 100644
index 00000000..6aa31da2
--- /dev/null
+++ b/LICENSE-DUAL.txt
@@ -0,0 +1,59 @@
+Box Backup, http://www.boxbackup.org/
+
+Copyright (c) 2003-2010, Ben Summers and contributors.
+All rights reserved.
+
+Note that this project uses mixed licensing. Any file with this license
+attached, or where the code LICENSE-DUAL appears on the first line, falls
+under this license. See the file COPYING.txt for more information.
+
+This file is dual licensed. You may use and distribute it providing that you
+comply EITHER with the terms of the BSD license, OR the GPL license. It is
+not necessary to comply with both licenses, only one.
+
+The BSD license option follows:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the Box Backup nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+[http://en.wikipedia.org/wiki/BSD_licenses#3-clause_license_.28.22New_BSD_License.22.29]
+
+The GPL license option follows:
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html#SEC4]
diff --git a/LICENSE-GPL.txt b/LICENSE-GPL.txt
new file mode 100644
index 00000000..3e84b646
--- /dev/null
+++ b/LICENSE-GPL.txt
@@ -0,0 +1,41 @@
+Box Backup, http://www.boxbackup.org/
+
+Copyright (c) 2003-2010, Ben Summers and contributors.
+All rights reserved.
+
+Note that this project uses mixed licensing. Any file with this license
+attached, or where the code LICENSE-GPL appears on the first line, falls
+under the "Box Backup GPL" license. See the file COPYING.txt for more
+information about this license.
+
+---------------------------------------------------------------------
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html#SEC4]
+
+As a special exception to the GPLv2, the Box Backup Project gives
+permission to link any code falling under this license (the Box Backup
+GPL) with any software that can be downloaded from
+the OpenSSL website [http://www.openssl.org] under either the
+"OpenSSL License" or the "Original SSLeay License", and to distribute
+the linked executables under the terms of the "Box Backup GPL" license.
+
+As a special exception to the GPLv2, the Box Backup Project gives
+permission to link any code falling under this license (the Box Backup
+GPL) with any version of Microsoft's Volume Shadow Copy Service 7.2 SDK
+or Microsoft Windows Software Development Kit (SDK), including
+vssapi.lib, that can be downloaded from the Microsoft website
+[*.microsoft.com], and to distribute the linked executables under the
+terms of the "Box Backup GPL" license.
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index d53bfd71..00000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-Box Backup, http://www.boxbackup.org/
-
-Copyright (c) 2003-2008 Ben Summers and contributors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-3. All use of this software and associated advertising materials must
- display the following acknowledgement:
-
- This product includes software developed by Ben Summers and
- contributors.
-
-4. The names of the Authors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-[Where legally impermissible the Authors do not disclaim liability for
-direct physical injury or death caused solely by defects in the software
-unless it is modified by a third party.]
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/bin/bbackupd/BackupClientDirectoryRecord.cpp b/bin/bbackupd/BackupClientDirectoryRecord.cpp
index b8d42d47..e03d53c2 100644
--- a/bin/bbackupd/BackupClientDirectoryRecord.cpp
+++ b/bin/bbackupd/BackupClientDirectoryRecord.cpp
@@ -294,14 +294,21 @@ void BackupClientDirectoryRecord::SyncDirectory(
#else
if(EMU_LSTAT(filename.c_str(), &file_st) != 0)
{
- // Report the error (logs and
- // eventual email to administrator)
- rNotifier.NotifyFileStatFailed(this,
- filename, strerror(errno));
+ if(!(rParams.mrContext.ExcludeDir(
+ filename)))
+ {
+ // Report the error (logs and
+ // eventual email to
+ // administrator)
+ rNotifier.NotifyFileStatFailed(
+ this, filename,
+ strerror(errno));
- // FIXME move to NotifyFileStatFailed()
- SetErrorWhenReadingFilesystemObject(
- rParams, filename.c_str());
+ // FIXME move to
+ // NotifyFileStatFailed()
+ SetErrorWhenReadingFilesystemObject(
+ rParams, filename.c_str());
+ }
// Ignore this entry for now.
continue;
@@ -606,8 +613,10 @@ void BackupClientDirectoryRecord::UpdateAttributes(BackupClientDirectoryRecord::
const StreamableMemBlock &storeAttrEnc(pDirOnStore->GetAttributes());
// Explict decryption
BackupClientFileAttributes storeAttr(storeAttrEnc);
+
// Compare the attributes
- if(attr.Compare(storeAttr, true, true /* ignore both modification times */))
+ if(attr.Compare(storeAttr, true,
+ true /* ignore both modification times */))
{
// No update necessary
updateAttr = false;
@@ -918,7 +927,7 @@ bool BackupClientDirectoryRecord::UpdateItems(
BOX_TRACE("Upload decision: " <<
filename << ": will not upload "
"(modified too recently: "
- "only " << age << "seconds ago)");
+ "only " << age << " seconds ago)");
}
else
{
@@ -1041,6 +1050,9 @@ bool BackupClientDirectoryRecord::UpdateItems(
{
try
{
+ rNotifier.NotifyFileUploadingAttributes(
+ this, filename);
+
// Update store
BackupClientFileAttributes attr;
attr.ReadAttributes(filename.c_str(), false /* put mod times in the attributes, please */);
diff --git a/bin/bbackupd/BackupDaemon.cpp b/bin/bbackupd/BackupDaemon.cpp
index 3615b848..5134d234 100644
--- a/bin/bbackupd/BackupDaemon.cpp
+++ b/bin/bbackupd/BackupDaemon.cpp
@@ -1017,12 +1017,15 @@ int BackupDaemon::UseScriptToSeeIfSyncAllowed()
// If there's no result, try again in five minutes
int waitInSeconds = (60*5);
+ std::string script(conf.GetKeyValue("SyncAllowScript") +
+ " \"" + GetConfigFileName() + "\"");
+
// Run it?
pid_t pid = 0;
try
{
- std::auto_ptr<IOStream> pscript(LocalProcessStream(
- conf.GetKeyValue("SyncAllowScript").c_str(), pid));
+ std::auto_ptr<IOStream> pscript(LocalProcessStream(script,
+ pid));
// Read in the result
IOStreamGetLine getLine(*pscript);
@@ -1044,17 +1047,15 @@ int BackupDaemon::UseScriptToSeeIfSyncAllowed()
}
catch(ConversionException &e)
{
- BOX_ERROR("Invalid output "
- "from SyncAllowScript '"
- << conf.GetKeyValue("SyncAllowScript")
- << "': '" << line << "'");
+ BOX_ERROR("Invalid output from "
+ "SyncAllowScript: '" <<
+ line << "' (" << script << ")");
throw;
}
BOX_NOTICE("Delaying sync by " << waitInSeconds
- << " seconds (SyncAllowScript '"
- << conf.GetKeyValue("SyncAllowScript")
- << "')");
+ << " seconds due to SyncAllowScript "
+ << "(" << script << ")");
}
}
@@ -1062,14 +1063,14 @@ int BackupDaemon::UseScriptToSeeIfSyncAllowed()
catch(std::exception &e)
{
BOX_ERROR("Internal error running SyncAllowScript: "
- << e.what());
+ << e.what() << " (" << script << ")");
}
catch(...)
{
// Ignore any exceptions
// Log that something bad happened
- BOX_ERROR("Error running SyncAllowScript '"
- << conf.GetKeyValue("SyncAllowScript") << "'");
+ BOX_ERROR("Unknown error running SyncAllowScript (" <<
+ script << ")");
}
// Wait and then cleanup child process, if any
@@ -2186,27 +2187,26 @@ void BackupDaemon::NotifySysadmin(SysadminNotifier::EventCode Event)
Event != SysadminNotifier::BackupFinish)
{
BOX_INFO("Not notifying administrator about event "
- << sEventNames[Event] << " -- set NotifyScript "
+ << sEventNames[Event] << ", set NotifyScript "
"to do this in future");
}
return;
}
// Script to run
- std::string script(conf.GetKeyValue("NotifyScript") + ' ' +
- sEventNames[Event]);
+ std::string script(conf.GetKeyValue("NotifyScript") + " " +
+ sEventNames[Event] + " \"" + GetConfigFileName() + "\"");
// Log what we're about to do
BOX_INFO("About to notify administrator about event "
- << sEventNames[Event] << ", running script '"
- << script << "'");
+ << sEventNames[Event] << ", running script '" << script << "'");
// Then do it
int returnCode = ::system(script.c_str());
if(returnCode != 0)
{
BOX_WARNING("Notify script returned error code: " <<
- returnCode << " ('" << script << "')");
+ returnCode << " (" << script << ")");
}
else if(Event != SysadminNotifier::BackupStart &&
Event != SysadminNotifier::BackupFinish)
diff --git a/bin/bbackupd/BackupDaemon.h b/bin/bbackupd/BackupDaemon.h
index 0c864abd..b41c6508 100644
--- a/bin/bbackupd/BackupDaemon.h
+++ b/bin/bbackupd/BackupDaemon.h
@@ -444,6 +444,16 @@ public:
BOX_NOTICE("Uploading patch to file: " << rLocalPath);
}
}
+ virtual void NotifyFileUploadingAttributes(
+ const BackupClientDirectoryRecord* pDirRecord,
+ const std::string& rLocalPath)
+ {
+ if (mLogAllFileAccess)
+ {
+ BOX_NOTICE("Uploading new file attributes: " <<
+ rLocalPath);
+ }
+ }
virtual void NotifyFileUploaded(
const BackupClientDirectoryRecord* pDirRecord,
const std::string& rLocalPath,
diff --git a/bin/bbackupd/BackupDaemonInterface.h b/bin/bbackupd/BackupDaemonInterface.h
index 5bbdd427..2a2d8d4b 100644
--- a/bin/bbackupd/BackupDaemonInterface.h
+++ b/bin/bbackupd/BackupDaemonInterface.h
@@ -123,6 +123,9 @@ class ProgressNotifier
virtual void NotifyFileUploadingPatch(
const BackupClientDirectoryRecord* pDirRecord,
const std::string& rLocalPath) = 0;
+ virtual void NotifyFileUploadingAttributes(
+ const BackupClientDirectoryRecord* pDirRecord,
+ const std::string& rLocalPath) = 0;
virtual void NotifyFileUploaded(
const BackupClientDirectoryRecord* pDirRecord,
const std::string& rLocalPath,
diff --git a/bin/bbackupd/Makefile.extra b/bin/bbackupd/Makefile.extra
index 52e21366..25ceb1e7 100644
--- a/bin/bbackupd/Makefile.extra
+++ b/bin/bbackupd/Makefile.extra
@@ -3,5 +3,5 @@ MAKEEXCEPTION = ../../lib/common/makeexception.pl
# AUTOGEN SEEDING
autogen_ClientException.h autogen_ClientException.cpp: $(MAKEEXCEPTION) ClientException.txt
- $(PERL) $(MAKEEXCEPTION) ClientException.txt
+ $(_PERL) $(MAKEEXCEPTION) ClientException.txt
diff --git a/bin/bbackupquery/BackupQueries.cpp b/bin/bbackupquery/BackupQueries.cpp
index 687dcb05..f799ab43 100644
--- a/bin/bbackupquery/BackupQueries.cpp
+++ b/bin/bbackupquery/BackupQueries.cpp
@@ -212,7 +212,7 @@ void BackupQueries::DoCommand(const char *Command, bool isFromCommandLine)
{
{ "quit", "" },
{ "exit", "" },
- { "list", "rodIFtTsh", },
+ { "list", "rodIFtTash", },
{ "pwd", "" },
{ "cd", "od" },
{ "lcd", "" },
@@ -397,6 +397,7 @@ void BackupQueries::CommandList(const std::vector<std::string> &args, const bool
#define LIST_OPTION_NOFLAGS 'F'
#define LIST_OPTION_TIMES_LOCAL 't'
#define LIST_OPTION_TIMES_UTC 'T'
+ #define LIST_OPTION_TIMES_ATTRIBS 'a'
#define LIST_OPTION_SIZEINBLOCKS 's'
#define LIST_OPTION_DISPLAY_HASH 'h'
@@ -435,6 +436,52 @@ void BackupQueries::CommandList(const std::vector<std::string> &args, const bool
List(rootDir, listRoot, opts, true /* first level to list */);
}
+static std::string GetTimeString(BackupStoreDirectory::Entry& en,
+ bool useLocalTime, bool showAttrModificationTimes)
+{
+ std::ostringstream out;
+ box_time_t originalTime, newAttributesTime;
+
+ // there is no attribute modification time in the directory
+ // entry, unfortunately, so we can't display it.
+ originalTime = en.GetModificationTime();
+ out << BoxTimeToISO8601String(originalTime, useLocalTime);
+
+ if(en.HasAttributes())
+ {
+ const StreamableMemBlock &storeAttr(en.GetAttributes());
+ BackupClientFileAttributes attr(storeAttr);
+
+ box_time_t NewModificationTime, NewAttrModificationTime;
+ attr.GetModificationTimes(&NewModificationTime,
+ &NewAttrModificationTime);
+
+ if (showAttrModificationTimes)
+ {
+ newAttributesTime = NewAttrModificationTime;
+ }
+ else
+ {
+ newAttributesTime = NewModificationTime;
+ }
+
+ if (newAttributesTime == originalTime)
+ {
+ out << "*";
+ }
+ else
+ {
+ out << "~" << BoxTimeToISO8601String(newAttributesTime,
+ useLocalTime);
+ }
+ }
+ else
+ {
+ out << " ";
+ }
+
+ return out.str();
+}
// --------------------------------------------------------------------------
//
@@ -534,17 +581,15 @@ void BackupQueries::List(int64_t DirID, const std::string &rListRoot, const bool
if(opts[LIST_OPTION_TIMES_UTC])
{
// Show UTC times...
- std::string time = BoxTimeToISO8601String(
- en->GetModificationTime(), false);
- printf("%s ", time.c_str());
+ printf("%s ", GetTimeString(*en, false,
+ opts[LIST_OPTION_TIMES_ATTRIBS]).c_str());
}
if(opts[LIST_OPTION_TIMES_LOCAL])
{
// Show local times...
- std::string time = BoxTimeToISO8601String(
- en->GetModificationTime(), true);
- printf("%s ", time.c_str());
+ printf("%s ", GetTimeString(*en, true,
+ opts[LIST_OPTION_TIMES_ATTRIBS]).c_str());
}
if(opts[LIST_OPTION_DISPLAY_HASH])
@@ -1544,13 +1589,31 @@ void BackupQueries::Compare(int64_t DirID, const std::string &rStoreDir,
continue;
}
+ std::string localDirPath(MakeFullPath(rLocalDir,
+ localDirEn->d_name));
+ std::string storeDirPath(rStoreDir + "/" +
+ localDirEn->d_name);
+
#ifndef HAVE_VALID_DIRENT_D_TYPE
- std::string fn(MakeFullPath
- (rLocalDir, localDirEn->d_name));
EMU_STRUCT_STAT st;
- if(EMU_LSTAT(fn.c_str(), &st) != 0)
+ if(EMU_LSTAT(localDirPath.c_str(), &st) != 0)
{
- THROW_EXCEPTION(CommonException, OSFileError)
+ // Check whether dir is excluded before trying
+ // to stat it, to fix problems with .gvfs
+ // directories that are not readable by root
+ // causing compare to crash:
+ // http://lists.boxbackup.org/pipermail/boxbackup/2010-January/000013.html
+ if(rParams.IsExcludedDir(localDirPath))
+ {
+ rParams.NotifyExcludedDir(localDirPath,
+ storeDirPath);
+ continue;
+ }
+ else
+ {
+ THROW_EXCEPTION_MESSAGE(CommonException,
+ OSFileError, localDirPath);
+ }
}
// Entry -- file or dir?
diff --git a/bin/bbackupquery/Makefile.extra b/bin/bbackupquery/Makefile.extra
index f347c451..e1049b6d 100644
--- a/bin/bbackupquery/Makefile.extra
+++ b/bin/bbackupquery/Makefile.extra
@@ -1,6 +1,6 @@
# AUTOGEN SEEDING
autogen_Documentation.cpp: makedocumentation.pl documentation.txt
- $(PERL) makedocumentation.pl
+ $(_PERL) makedocumentation.pl
diff --git a/bin/bbackupquery/bbackupquery.cpp b/bin/bbackupquery/bbackupquery.cpp
index bab697b8..5aa7e97e 100644
--- a/bin/bbackupquery/bbackupquery.cpp
+++ b/bin/bbackupquery/bbackupquery.cpp
@@ -60,7 +60,7 @@
void PrintUsageAndExit()
{
- printf("Usage: bbackupquery [-q] [-w] "
+ printf("Usage: bbackupquery [-q*|v*|V|W<level>] [-w] "
#ifdef WIN32
"[-u] "
#endif
@@ -123,10 +123,10 @@ int main(int argc, const char *argv[])
#endif
#ifdef WIN32
- const char* validOpts = "qvwuc:l:o:O:W:";
+ const char* validOpts = "qvVwuc:l:o:O:W:";
bool unicodeConsole = false;
#else
- const char* validOpts = "qvwc:l:o:O:W:";
+ const char* validOpts = "qvVwc:l:o:O:W:";
#endif
std::string fileLogFile;
@@ -138,7 +138,7 @@ int main(int argc, const char *argv[])
{
switch(c)
{
- case 'q':
+ case 'q':
{
if(masterLevel == Log::NOTHING)
{
@@ -151,7 +151,7 @@ int main(int argc, const char *argv[])
}
break;
- case 'v':
+ case 'v':
{
if(masterLevel == Log::EVERYTHING)
{
@@ -164,6 +164,12 @@ int main(int argc, const char *argv[])
}
break;
+ case 'V':
+ {
+ masterLevel = Log::EVERYTHING;
+ }
+ break;
+
case 'W':
{
masterLevel = Logging::GetNamedLevel(optarg);
diff --git a/bin/bbackupquery/documentation.txt b/bin/bbackupquery/documentation.txt
index d32bf200..96eda158 100644
--- a/bin/bbackupquery/documentation.txt
+++ b/bin/bbackupquery/documentation.txt
@@ -38,10 +38,13 @@ start with '/'. The initial directory is always the root directory.
-o -- list old versions of files/directories
-I -- don't display object ID
-F -- don't display flags
- -t -- show file modification time
- (and attr mod time if has the object has attributes, ~ separated)
+ -t -- show file modification time in local time
+ (and attr mod time if has the object has attributes, ~ separated)
+ -T -- show file modification time in GMT
+ -a -- show updated attribute instead of file modification time
-s -- show file size in blocks used on server
- (only very approximate indication of size locally)
+ (only very approximate indication of size locally)
+ -h -- show file attributes hash
ls can be used as an alias.
<
diff --git a/bin/bbstoreaccounts/bbstoreaccounts.cpp b/bin/bbstoreaccounts/bbstoreaccounts.cpp
index e377b661..a9d2b0af 100644
--- a/bin/bbstoreaccounts/bbstoreaccounts.cpp
+++ b/bin/bbstoreaccounts/bbstoreaccounts.cpp
@@ -45,16 +45,17 @@ bool sMachineReadableOutput = false;
void CheckSoftHardLimits(int64_t SoftLimit, int64_t HardLimit)
{
- if(SoftLimit >= HardLimit)
+ if(SoftLimit > HardLimit)
{
BOX_FATAL("Soft limit must be less than the hard limit.");
exit(1);
}
if(SoftLimit > ((HardLimit * MAX_SOFT_LIMIT_SIZE) / 100))
{
- BOX_FATAL("Soft limit must be no more than " <<
- MAX_SOFT_LIMIT_SIZE << "% of the hard limit.");
- exit(1);
+ BOX_WARNING("We recommend setting the soft limit below " <<
+ MAX_SOFT_LIMIT_SIZE << "% of the hard limit, or " <<
+ HumanReadableSize((HardLimit * MAX_SOFT_LIMIT_SIZE)
+ / 100) << " in this case.");
}
}
diff --git a/bin/bbstored/BBStoreDHousekeeping.cpp b/bin/bbstored/BBStoreDHousekeeping.cpp
index 1c1767ca..7f799008 100644
--- a/bin/bbstored/BBStoreDHousekeeping.cpp
+++ b/bin/bbstored/BBStoreDHousekeeping.cpp
@@ -108,7 +108,8 @@ void BackupStoreDaemon::RunHousekeepingIfNeeded()
mpAccounts->GetAccountRoot(*i, rootDir, discSet);
// Do housekeeping on this account
- HousekeepStoreAccount housekeeping(*i, rootDir, discSet, *this);
+ HousekeepStoreAccount housekeeping(*i, rootDir,
+ discSet, this);
housekeeping.DoHousekeeping();
}
}
diff --git a/bin/bbstored/BackupStoreContext.cpp b/bin/bbstored/BackupStoreContext.cpp
index 990be05d..2e915f57 100644
--- a/bin/bbstored/BackupStoreContext.cpp
+++ b/bin/bbstored/BackupStoreContext.cpp
@@ -191,6 +191,23 @@ void BackupStoreContext::LoadStoreInfo()
// Keep the pointer to it
mpStoreInfo = i;
+
+ BackupStoreAccountDatabase::Entry account(mClientID, mStoreDiscSet);
+
+ // try to load the reference count database
+ try
+ {
+ mapRefCount = BackupStoreRefCountDatabase::Load(account, false);
+ }
+ catch(BoxException &e)
+ {
+ BOX_WARNING("Reference count database is missing or corrupted, "
+ "creating a new one, expect housekeeping to find and "
+ "fix problems with reference counts later.");
+
+ BackupStoreRefCountDatabase::CreateForRegeneration(account);
+ mapRefCount = BackupStoreRefCountDatabase::Load(account, false);
+ }
}
@@ -395,15 +412,18 @@ int64_t BackupStoreContext::AllocateObjectID()
// --------------------------------------------------------------------------
//
// Function
-// Name: BackupStoreContext::AddFile(IOStream &, int64_t, int64_t, int64_t, const BackupStoreFilename &, bool)
-// Purpose: Add a file to the store, from a given stream, into a specified directory.
-// Returns object ID of the new file.
+// Name: BackupStoreContext::AddFile(IOStream &, int64_t,
+// int64_t, int64_t, const BackupStoreFilename &, bool)
+// Purpose: Add a file to the store, from a given stream, into
+// a specified directory. Returns object ID of the new
+// file.
// Created: 2003/09/03
//
// --------------------------------------------------------------------------
-int64_t BackupStoreContext::AddFile(IOStream &rFile, int64_t InDirectory, int64_t ModificationTime,
- int64_t AttributesHash, int64_t DiffFromFileID, const BackupStoreFilename &rFilename,
- bool MarkFileWithSameNameAsOldVersions)
+int64_t BackupStoreContext::AddFile(IOStream &rFile, int64_t InDirectory,
+ int64_t ModificationTime, int64_t AttributesHash,
+ int64_t DiffFromFileID, const BackupStoreFilename &rFilename,
+ bool MarkFileWithSameNameAsOldVersions)
{
if(mpStoreInfo.get() == 0)
{
@@ -670,6 +690,9 @@ int64_t BackupStoreContext::AddFile(IOStream &rFile, int64_t InDirectory, int64_
mpStoreInfo->ChangeBlocksUsed(blocksUsed);
mpStoreInfo->ChangeBlocksInOldFiles(blocksInOldFiles);
+ // Increment reference count on the new directory to one
+ mapRefCount->AddReference(id);
+
// Save the store info -- can cope if this exceptions because infomation
// will be rebuilt by housekeeping, and ID allocation can recover.
SaveStoreInfo();
@@ -768,8 +791,9 @@ bool BackupStoreContext::DeleteFile(const BackupStoreFilename &rFilename, int64_
// --------------------------------------------------------------------------
//
// Function
-// Name: BackupStoreContext::DeleteFile(const BackupStoreFilename &, int64_t, int64_t &)
-// Purpose: Deletes a file, returning true if the file existed. Object ID returned too, set to zero if not found.
+// Name: BackupStoreContext::UndeleteFile(int64_t, int64_t)
+// Purpose: Undeletes a file, if it exists, returning true if
+// the file existed.
// Created: 2003/10/21
//
// --------------------------------------------------------------------------
@@ -933,8 +957,10 @@ void BackupStoreContext::SaveDirectory(BackupStoreDirectory &rDir, int64_t Objec
// --------------------------------------------------------------------------
//
// Function
-// Name: BackupStoreContext::AddDirectory(int64_t, const BackupStoreFilename &, bool &)
-// Purpose: Creates a directory (or just returns the ID of an existing one). rAlreadyExists set appropraitely.
+// Name: BackupStoreContext::AddDirectory(int64_t,
+// const BackupStoreFilename &, bool &)
+// Purpose: Creates a directory (or just returns the ID of an
+// existing one). rAlreadyExists set appropraitely.
// Created: 2003/09/04
//
// --------------------------------------------------------------------------
@@ -974,7 +1000,7 @@ int64_t BackupStoreContext::AddDirectory(int64_t InDirectory, const BackupStoreF
// Allocate the next ID
int64_t id = AllocateObjectID();
- // Create a blank directory with the given attributes on disc
+ // Create an empty directory with the given attributes on disc
std::string fn;
MakeObjectFilename(id, fn, true /* make sure the directory it's in exists */);
{
@@ -998,11 +1024,14 @@ int64_t BackupStoreContext::AddDirectory(int64_t InDirectory, const BackupStoreF
// Not added to cache, so don't set the size in the directory
}
- // Then add it into the directory
+ // Then add it into the parent directory
try
{
dir.AddEntry(rFilename, 0 /* modification time */, id, 0 /* blocks used */, BackupStoreDirectory::Entry::Flags_Dir, 0 /* attributes mod time */);
SaveDirectory(dir, InDirectory);
+
+ // Increment reference count on the new directory to one
+ mapRefCount->AddReference(id);
}
catch(...)
{
@@ -1016,7 +1045,7 @@ int64_t BackupStoreContext::AddDirectory(int64_t InDirectory, const BackupStoreF
// Don't worry about the incremented number in the store info
throw;
}
-
+
// Save the store info (may be postponed)
SaveStoreInfo();
diff --git a/bin/bbstored/BackupStoreContext.h b/bin/bbstored/BackupStoreContext.h
index 4cfdb601..6053e4b8 100644
--- a/bin/bbstored/BackupStoreContext.h
+++ b/bin/bbstored/BackupStoreContext.h
@@ -14,6 +14,7 @@
#include <map>
#include <memory>
+#include "BackupStoreRefCountDatabase.h"
#include "NamedLock.h"
#include "ProtocolObject.h"
#include "Utils.h"
@@ -137,7 +138,6 @@ private:
void DeleteDirectoryRecurse(int64_t ObjectID, int64_t &rBlocksDeletedOut, bool Undelete);
int64_t AllocateObjectID();
-private:
int32_t mClientID;
HousekeepingInterface &mrDaemon;
int mProtocolPhase;
@@ -150,6 +150,9 @@ private:
// Store info
std::auto_ptr<BackupStoreInfo> mpStoreInfo;
+
+ // Refcount database
+ std::auto_ptr<BackupStoreRefCountDatabase> mapRefCount;
// Directory cache
std::map<int64_t, BackupStoreDirectory*> mDirectoryCache;
diff --git a/bin/bbstored/BackupStoreDaemon.h b/bin/bbstored/BackupStoreDaemon.h
index a5d216f4..49af5b81 100644
--- a/bin/bbstored/BackupStoreDaemon.h
+++ b/bin/bbstored/BackupStoreDaemon.h
@@ -14,11 +14,11 @@
#include "BoxPortsAndFiles.h"
#include "BackupConstants.h"
#include "BackupStoreContext.h"
+#include "HousekeepStoreAccount.h"
#include "IOStreamGetLine.h"
class BackupStoreAccounts;
class BackupStoreAccountDatabase;
-class HousekeepStoreAccount;
// --------------------------------------------------------------------------
//
@@ -29,10 +29,8 @@ class HousekeepStoreAccount;
//
// --------------------------------------------------------------------------
class BackupStoreDaemon : public ServerTLS<BOX_PORT_BBSTORED>,
- HousekeepingInterface
+ HousekeepingInterface, HousekeepingCallback
{
- friend class HousekeepStoreAccount;
-
public:
BackupStoreDaemon();
~BackupStoreDaemon();
@@ -64,10 +62,13 @@ protected:
// Housekeeping functions
void HousekeepingProcess();
- bool CheckForInterProcessMsg(int AccountNum = 0, int MaximumWaitTime = 0);
void LogConnectionStats(const char *commonName, const SocketStreamTLS &s);
+public:
+ // HousekeepingInterface implementation
+ virtual bool CheckForInterProcessMsg(int AccountNum = 0, int MaximumWaitTime = 0);
+
private:
BackupStoreAccountDatabase *mpAccountDatabase;
BackupStoreAccounts *mpAccounts;
diff --git a/bin/bbstored/HousekeepStoreAccount.cpp b/bin/bbstored/HousekeepStoreAccount.cpp
index dbb9b544..0ccbcf23 100644
--- a/bin/bbstored/HousekeepStoreAccount.cpp
+++ b/bin/bbstored/HousekeepStoreAccount.cpp
@@ -39,11 +39,13 @@
// Created: 11/12/03
//
// --------------------------------------------------------------------------
-HousekeepStoreAccount::HousekeepStoreAccount(int AccountID, const std::string &rStoreRoot, int StoreDiscSet, BackupStoreDaemon &rDaemon)
+HousekeepStoreAccount::HousekeepStoreAccount(int AccountID,
+ const std::string &rStoreRoot, int StoreDiscSet,
+ HousekeepingCallback* pHousekeepingCallback)
: mAccountID(AccountID),
mStoreRoot(rStoreRoot),
mStoreDiscSet(StoreDiscSet),
- mrDaemon(rDaemon),
+ mpHousekeepingCallback(pHousekeepingCallback),
mDeletionSizeTarget(0),
mPotentialDeletionsTotalSize(0),
mMaxSizeInPotentialDeletions(0),
@@ -57,6 +59,7 @@ HousekeepStoreAccount::HousekeepStoreAccount(int AccountID, const std::string &r
mBlocksInDirectoriesDelta(0),
mFilesDeleted(0),
mEmptyDirectoriesDeleted(0),
+ mSuppressRefCountChangeWarnings(false),
mCountUntilNextInterprocessMsgCheck(POLL_INTERPROCESS_MSG_CHECK_FREQUENCY)
{
}
@@ -81,7 +84,7 @@ HousekeepStoreAccount::~HousekeepStoreAccount()
// Created: 11/12/03
//
// --------------------------------------------------------------------------
-void HousekeepStoreAccount::DoHousekeeping()
+void HousekeepStoreAccount::DoHousekeeping(bool KeepTryingForever)
{
// Attempt to lock the account
std::string writeLockFilename;
@@ -91,8 +94,21 @@ void HousekeepStoreAccount::DoHousekeeping()
if(!writeLock.TryAndGetLock(writeLockFilename.c_str(),
0600 /* restrictive file permissions */))
{
- // Couldn't lock the account -- just stop now
- return;
+ if(KeepTryingForever)
+ {
+ BOX_WARNING("Failed to lock account for housekeeping, "
+ "still trying...");
+ while(!writeLock.TryAndGetLock(writeLockFilename,
+ 0600 /* restrictive file permissions */))
+ {
+ sleep(1);
+ }
+ }
+ else
+ {
+ // Couldn't lock the account -- just stop now
+ return;
+ }
}
// Load the store info to find necessary info for the housekeeping
@@ -106,6 +122,14 @@ void HousekeepStoreAccount::DoHousekeeping()
mDeletionSizeTarget = 0;
}
+ // initialise the refcount database
+ mNewRefCounts.clear();
+ // try to pre-allocate as much memory as we need
+ mNewRefCounts.reserve(info->GetLastObjectIDUsed());
+ // initialise the refcount of the root entry
+ mNewRefCounts.resize(BACKUPSTORE_ROOT_DIRECTORY_ID + 1, 0);
+ mNewRefCounts[BACKUPSTORE_ROOT_DIRECTORY_ID] = 1;
+
// Scan the directory for potential things to delete
// This will also remove eligible items marked with RemoveASAP
bool continueHousekeeping = ScanDirectory(BACKUPSTORE_ROOT_DIRECTORY_ID);
@@ -207,6 +231,86 @@ void HousekeepStoreAccount::DoHousekeeping()
mEmptyDirectoriesDeleted << " dirs)" <<
(deleteInterrupted?" and was interrupted":""));
}
+
+ // We can only update the refcount database if we successfully
+ // finished our scan of all directories, otherwise we don't actually
+ // know which of the new counts are valid and which aren't
+ // (we might not have seen second references to some objects, etc.)
+
+ BackupStoreAccountDatabase::Entry account(mAccountID, mStoreDiscSet);
+ std::auto_ptr<BackupStoreRefCountDatabase> apReferences;
+
+ // try to load the reference count database
+ try
+ {
+ apReferences = BackupStoreRefCountDatabase::Load(account,
+ false);
+ }
+ catch(BoxException &e)
+ {
+ BOX_WARNING("Reference count database is missing or corrupted "
+ "during housekeeping, creating a new one.");
+ mSuppressRefCountChangeWarnings = true;
+ BackupStoreRefCountDatabase::CreateForRegeneration(account);
+ apReferences = BackupStoreRefCountDatabase::Load(account,
+ false);
+ }
+
+ int64_t LastUsedObjectIdOnDisk = apReferences->GetLastObjectIDUsed();
+
+ for (int64_t ObjectID = BACKUPSTORE_ROOT_DIRECTORY_ID;
+ ObjectID < mNewRefCounts.size(); ObjectID++)
+ {
+ if (ObjectID > LastUsedObjectIdOnDisk)
+ {
+ if (!mSuppressRefCountChangeWarnings)
+ {
+ BOX_WARNING("Reference count of object " <<
+ BOX_FORMAT_OBJECTID(ObjectID) <<
+ " not found in database, added"
+ " with " << mNewRefCounts[ObjectID] <<
+ " references");
+ }
+ apReferences->SetRefCount(ObjectID,
+ mNewRefCounts[ObjectID]);
+ LastUsedObjectIdOnDisk = ObjectID;
+ continue;
+ }
+
+ BackupStoreRefCountDatabase::refcount_t OldRefCount =
+ apReferences->GetRefCount(ObjectID);
+
+ if (OldRefCount != mNewRefCounts[ObjectID])
+ {
+ BOX_WARNING("Reference count of object " <<
+ BOX_FORMAT_OBJECTID(ObjectID) <<
+ " changed from " << OldRefCount <<
+ " to " << mNewRefCounts[ObjectID]);
+ apReferences->SetRefCount(ObjectID,
+ mNewRefCounts[ObjectID]);
+ }
+ }
+
+ // zero excess references in the database
+ for (int64_t ObjectID = mNewRefCounts.size();
+ ObjectID <= LastUsedObjectIdOnDisk; ObjectID++)
+ {
+ BackupStoreRefCountDatabase::refcount_t OldRefCount =
+ apReferences->GetRefCount(ObjectID);
+ BackupStoreRefCountDatabase::refcount_t NewRefCount = 0;
+
+ if (OldRefCount != NewRefCount)
+ {
+ BOX_WARNING("Reference count of object " <<
+ BOX_FORMAT_OBJECTID(ObjectID) <<
+ " changed from " << OldRefCount <<
+ " to " << NewRefCount << " (not found)");
+ apReferences->SetRefCount(ObjectID, NewRefCount);
+ }
+ }
+
+ // force file to be saved and closed before releasing the lock below
+ apReferences.reset();
// Make sure the delta's won't cause problems if the counts are
// really wrong, and it wasn't fixed because the store was
@@ -279,7 +383,7 @@ bool HousekeepStoreAccount::ScanDirectory(int64_t ObjectID)
// Check for having to stop
// Include account ID here as the specified account is locked
- if(mrDaemon.CheckForInterProcessMsg(mAccountID))
+ if(mpHousekeepingCallback && mpHousekeepingCallback->CheckForInterProcessMsg(mAccountID))
{
// Need to abort now
return false;
@@ -312,7 +416,25 @@ bool HousekeepStoreAccount::ScanDirectory(int64_t ObjectID)
// Add it to the list of directories to potentially delete
mEmptyDirectories.push_back(dir.GetObjectID());
}
-
+
+ // Calculate reference counts first, before we start requesting
+ // files to be deleted.
+ // BLOCK
+ {
+ BackupStoreDirectory::Iterator i(dir);
+ BackupStoreDirectory::Entry *en = 0;
+
+ while((en = i.Next()) != 0)
+ {
+ // This directory references this object
+ if (mNewRefCounts.size() <= en->GetObjectID())
+ {
+ mNewRefCounts.resize(en->GetObjectID() + 1, 0);
+ }
+ mNewRefCounts[en->GetObjectID()]++;
+ }
+ }
+
// BLOCK
{
// Remove any files which are marked for removal as soon
@@ -551,7 +673,7 @@ bool HousekeepStoreAccount::DeleteFiles()
{
mCountUntilNextInterprocessMsgCheck = POLL_INTERPROCESS_MSG_CHECK_FREQUENCY;
// Check for having to stop
- if(mrDaemon.CheckForInterProcessMsg(mAccountID)) // include account ID here as the specified account is now locked
+ if(mpHousekeepingCallback && mpHousekeepingCallback->CheckForInterProcessMsg(mAccountID)) // include account ID here as the specified account is now locked
{
// Need to abort now
return true;
@@ -761,13 +883,22 @@ void HousekeepStoreAccount::DeleteFile(int64_t InDirectory, int64_t ObjectID, Ba
padjustedEntry.reset(); // delete it now
}
- // Delete from disc
+ // Drop reference count by one. If it reaches zero, delete the file.
+ if(--mNewRefCounts[ObjectID] == 0)
{
+ BOX_TRACE("Removing unreferenced object " <<
+ BOX_FORMAT_OBJECTID(ObjectID));
std::string objFilename;
MakeObjectFilename(ObjectID, objFilename);
RaidFileWrite del(mStoreDiscSet, objFilename);
del.Delete();
}
+ else
+ {
+ BOX_TRACE("Preserving object " <<
+ BOX_FORMAT_OBJECTID(ObjectID) << " with " <<
+ mNewRefCounts[ObjectID] << " references");
+ }
// Adjust counts for the file
++mFilesDeleted;
@@ -808,7 +939,7 @@ bool HousekeepStoreAccount::DeleteEmptyDirectories()
{
mCountUntilNextInterprocessMsgCheck = POLL_INTERPROCESS_MSG_CHECK_FREQUENCY;
// Check for having to stop
- if(mrDaemon.CheckForInterProcessMsg(mAccountID)) // include account ID here as the specified account is now locked
+ if(mpHousekeepingCallback && mpHousekeepingCallback->CheckForInterProcessMsg(mAccountID)) // include account ID here as the specified account is now locked
{
// Need to abort now
return true;
diff --git a/bin/bbstored/HousekeepStoreAccount.h b/bin/bbstored/HousekeepStoreAccount.h
index 5c2a9885..1dd6d79c 100644
--- a/bin/bbstored/HousekeepStoreAccount.h
+++ b/bin/bbstored/HousekeepStoreAccount.h
@@ -17,6 +17,12 @@
class BackupStoreDaemon;
class BackupStoreDirectory;
+class HousekeepingCallback
+{
+ public:
+ virtual ~HousekeepingCallback() {}
+ virtual bool CheckForInterProcessMsg(int AccountNum = 0, int MaximumWaitTime = 0) = 0;
+};
// --------------------------------------------------------------------------
//
@@ -29,10 +35,11 @@ class BackupStoreDirectory;
class HousekeepStoreAccount
{
public:
- HousekeepStoreAccount(int AccountID, const std::string &rStoreRoot, int StoreDiscSet, BackupStoreDaemon &rDaemon);
+ HousekeepStoreAccount(int AccountID, const std::string &rStoreRoot,
+ int StoreDiscSet, HousekeepingCallback* pHousekeepingCallback);
~HousekeepStoreAccount();
- void DoHousekeeping();
+ void DoHousekeeping(bool KeepTryingForever = false);
private:
@@ -65,7 +72,7 @@ private:
int mAccountID;
std::string mStoreRoot;
int mStoreDiscSet;
- BackupStoreDaemon &mrDaemon;
+ HousekeepingCallback* mpHousekeepingCallback;
int64_t mDeletionSizeTarget;
@@ -91,6 +98,10 @@ private:
// Deletion count
int64_t mFilesDeleted;
int64_t mEmptyDirectoriesDeleted;
+
+ // New reference count list
+ std::vector<uint32_t> mNewRefCounts;
+ bool mSuppressRefCountChangeWarnings;
// Poll frequency
int mCountUntilNextInterprocessMsgCheck;
diff --git a/bin/bbstored/Makefile.extra b/bin/bbstored/Makefile.extra
index 94bc3fb9..6562647d 100644
--- a/bin/bbstored/Makefile.extra
+++ b/bin/bbstored/Makefile.extra
@@ -5,5 +5,5 @@ GEN_CMD_SRV = $(MAKEPROTOCOL) Server backupprotocol.txt
# AUTOGEN SEEDING
autogen_BackupProtocolServer.cpp autogen_BackupProtocolServer.h: $(MAKEPROTOCOL) backupprotocol.txt
- $(PERL) $(GEN_CMD_SRV)
+ $(_PERL) $(GEN_CMD_SRV)
diff --git a/bin/s3simulator/s3simulator.cpp b/bin/s3simulator/s3simulator.cpp
new file mode 100644
index 00000000..9a10635c
--- /dev/null
+++ b/bin/s3simulator/s3simulator.cpp
@@ -0,0 +1,32 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: s3simulator.cpp
+// Purpose: main file for S3 simulator daemon
+// Created: 2003/10/11
+//
+// --------------------------------------------------------------------------
+
+#include "Box.h"
+#include "S3Simulator.h"
+#include "MainHelper.h"
+
+#include "MemLeakFindOn.h"
+
+int main(int argc, const char *argv[])
+{
+ int ExitCode = 0;
+
+ MAINHELPER_START
+
+ Logging::SetProgramName("s3simulator");
+ Logging::ToConsole(true);
+ Logging::ToSyslog (true);
+
+ S3Simulator daemon;
+ ExitCode = daemon.Main("s3simulator.conf", argc, argv);
+
+ MAINHELPER_END
+
+ return ExitCode;
+}
diff --git a/contrib/cygwin/README.txt b/contrib/cygwin/README.txt
deleted file mode 100644
index 83f32fd9..00000000
--- a/contrib/cygwin/README.txt
+++ /dev/null
@@ -1,30 +0,0 @@
- Making boxbackup run as a Windows Service
-
-For most installations (with the default locations for config files,
-etc.) running the install-cygwin-service.pl script will complete the
-installation painlessly, and you will have a running bbackupd after
-completing the installation, and whenever you reboot.
-
-Simply run the script:
-
-perl install-cygwin-service.pl
-
-The service can be monitored in the Windows Service Manager. It is named
-boxbackup.
-
-For non-standard configurations, there are command-line options to point
-the script to the bbackupd.conf config file, and the bbackupd.exe
-executable:
-
-perl install-cygwin-service.pl [-c <path-to-bbackupd-config-file>] [-e
-<path-to-bbackupd-executable-file>]
-
-
- Removing the Service
-
-If you decide not to run backups on a machine anymore, simply remove the
-service by running:
-
-sh remove-cygwin-service.sh
-
-
diff --git a/contrib/cygwin/install-cygwin-service.pl.in b/contrib/cygwin/install-cygwin-service.pl.in
deleted file mode 100755
index a580e99c..00000000
--- a/contrib/cygwin/install-cygwin-service.pl.in
+++ /dev/null
@@ -1,112 +0,0 @@
-#!@PERL@ -w
-
-
-# Contributed to the boxbackup project by Per Reedtz Thomsen. pthomsen@reedtz.com
-
-# This script reads the config file for boxbackup, and changes the mode
-# of the directory named by 'DataDirectory' and any files there. Also,
-# the files pointed to by the 'CommandSocket' and 'PidFile' configuration
-# parameters will be chmod'ed to be read-write by all.
-# The Windows services are created and started using the 'cygrunsrv' utility.
-
-# Date Who Comments
-# 20041005 pthomsen@reedtz.com Created
-# 20041020 pthomsen@reedtz.com Switched to using Getopt::Std for cmd-line things.
-
-use strict;
-
-use Getopt::Std;
-getopt('ce');
-our ($opt_c, $opt_e);
-# Figure out the config file to use. Default is /etc/box/bbackupd.conf
-my $confFile = (defined($opt_c) ? $opt_c : "/etc/box/bbackupd.conf");
-# Figure out the bbaackupd executable to use. Default is /usr/local/bin/bbackupd.exe
-my $exeFile = (defined($opt_e) ? $opt_e : "/usr/local/bin/bbackupd.exe");
-
-die "File $confFile does not exist. Please provide the full path to the bbackupd configuration file.\n" if !(-f $confFile);
-die "Can't read $confFile. Permission denied. Please chmod the file so I can read it.\n" if !(-r $confFile);
-die "File $exeFile does not exist. Please provide the full path to the bbackupd.exe file.\n" if !(-f $exeFile);
-die "File $exeFile is not executable. Please provide the full path to the correct bbackupd.exe file.\n" if !(-x $exeFile);
-
-# print "Config: $confFile\n";
-
-my $dataDir;
-my $cmdSocket;
-my $pidFile;
-
-open (CONFIG, "<$confFile") or die "Can't open $confFile: $!\n";
-
-# Read the confgiguration file, and pull the DataDirectory, CommandSocket, and PidFile parameters.
-while (<CONFIG>)
-{
-
- if (/^\s*DataDirectory\s*=\s*([^\n\s]+)\s*\n/)
- {
- $dataDir = $1;
- next;
- }
-
- if (/^\s*CommandSocket\s*=\s*([^\n\s]+)\s*\n/)
- {
- $cmdSocket = $1;
- next;
- }
- if (/^\s*PidFile\s*=\s*([^\n\s]+)\s*\n/)
- {
- $pidFile = $1;
- next;
- }
-}
-
-# check that we got all the parameters from the file. If not, die.
-if ((!defined($dataDir)) || (!defined($cmdSocket)) || (!defined($pidFile)))
-{
- die "Could not read config parameters from $confFile. Values retrieved:\n\tDataDirectory = $dataDir\n\tCommandSocket = $cmdSocket\n\tPidFile = $pidFile\n";
-}
-
-
-print "Parameters retrieved from $confFile. Values:\n\tDataDirectory = $dataDir\n\tCommandSocket = $cmdSocket\n\tPidFile = $pidFile\n";
-print "chmod...";
-# change the mode of the files/dirs retrieved.
-chmod(0777, $dataDir) or die "Can't chmod $dataDir: $!\n";
-chmod(0666, "$dataDir/*") or die "Can't chmod $dataDir/*: $!\n";
-chmod(0666, $pidFile) or die "Can't chmod $pidFile: $!\n";
-chmod(0755, $cmdSocket) or die "Can't chmod $cmdSocket: $!\n";
-print " Done.\n";
-
-# Now install the service using cygrunsrv.
-# Details:
-# -I <svc_name> Install a service. svc_name is the name under which the
-# service will appear in the Windows Service Manager
-# -p <path_to_exe> Path to the executable.
-# -a <options> Command line options to the executable.
-# -f <description> Description of the service.
-# -o Attempt clean exit of service during system shutdown
-
-print "Installing boxbackup service...";
-my $sysCmd = "cygrunsrv.exe -I boxbackup -p " . $exeFile;
-$sysCmd .= " -a \"" . $confFile . " SINGLEPROCESS\"";
-$sysCmd .= " -o -f \"Online Backup System by Ben Summers\"";
-print "$sysCmd\n";
-my $output = qx($sysCmd);
-die "cygrunsrv failed to install service. Error Message: $output\n" if($output ne "");
-print " Done.\n";
-
-
-# Start the service
-# Details:
-# -S <svc_name> Start a service. svc_name is the name of the (installed)
-# service to start.
-
-print "Starting boxbackup service...";
-$sysCmd = "cygrunsrv.exe -S boxbackup";
-print "$sysCmd\n";
-$output = qx($sysCmd);
-die "cygrunsrv failed to start service. Error Message: $output\n" if($output ne "");
-print " Done.\n";
-
-print "\n\nService Installation complete. To test, reboot your machine, and make sure that\n";
-print "the boxbackup service is running. A good way to make sure, is to check that the account number\n";
-print "from this machine is connecting to the bbstored server. Check the bbstored logs for more info.\n\n";
-
-
diff --git a/contrib/cygwin/remove-cygwin-service.sh b/contrib/cygwin/remove-cygwin-service.sh
deleted file mode 100755
index e766333d..00000000
--- a/contrib/cygwin/remove-cygwin-service.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-# Contributed to the boxbackup project by Per Reedtz Thomsen. pthomsen@reedtz.com
-
-# This script removes the 'boxbackup' service from the Windows service manager
-# using the cygrunsrv utility.
-
-# Date Who Comments
-# 20041005 pthomsen@reedtz.com Created
-
-cygrunsrv -R boxbackup
-
-echo "Service \"boxbackup\" removed."
-
diff --git a/contrib/rpm/boxbackup.spec b/contrib/rpm/boxbackup.spec
index 9c494159..e782a6c3 100644
--- a/contrib/rpm/boxbackup.spec
+++ b/contrib/rpm/boxbackup.spec
@@ -25,18 +25,18 @@
%if %{is_suse}
%define init_dir %{_sysconfdir}/init.d
-%define dist suse
+%define distribution suse
%define rc_start rc
%else
%define init_dir %{_sysconfdir}/rc.d/init.d
-%define dist redhat
+%define distribution redhat
%define rc_start "service "
%endif
Summary: An automatic on-line backup system for UNIX.
Name: boxbackup
Version: ###DISTRIBUTION-VERSION-NUMBER###
-Release: 1
+Release: 1%{?dist}
License: BSD
Group: Applications/Archiving
Packager: boxbackup-dev@boxbackup.org
@@ -104,23 +104,16 @@ mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/box/bbackupd
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/box/bbstored
mkdir -p $RPM_BUILD_ROOT%{_var}/lib/box
-install -m 644 BUGS.txt \
- $RPM_BUILD_ROOT%{_docdir}/%{ident}
-install -m 644 VERSION.txt \
- $RPM_BUILD_ROOT%{_docdir}/%{ident}
-install -m 644 ExceptionCodes.txt \
- $RPM_BUILD_ROOT%{_docdir}/%{ident}
-install -m 644 LICENSE.txt \
- $RPM_BUILD_ROOT%{_docdir}/%{ident}
-
-install -m 644 %{distribution_dir}CONTACT.txt \
- $RPM_BUILD_ROOT%{_docdir}/%{ident}
-install -m 644 %{distribution_dir}DOCUMENTATION.txt \
- $RPM_BUILD_ROOT%{_docdir}/%{ident}
-install -m 644 %{distribution_dir}LINUX.txt \
- $RPM_BUILD_ROOT%{_docdir}/%{ident}
-install -m 644 %{distribution_dir}THANKS.txt \
- $RPM_BUILD_ROOT%{_docdir}/%{ident}
+install -m 644 -t $RPM_BUILD_ROOT%{_docdir}/%{ident} \
+ BUGS.txt \
+ VERSION.txt \
+ ExceptionCodes.txt \
+ LICENSE-GPL.txt \
+ LICENSE-DUAL.txt \
+ %{distribution_dir}CONTACT.txt \
+ %{distribution_dir}DOCUMENTATION.txt \
+ %{distribution_dir}LINUX.txt \
+ %{distribution_dir}THANKS.txt
install -m 644 contrib/bbreporter/LICENSE \
$RPM_BUILD_ROOT%{_docdir}/%{ident}/bbreporter
@@ -129,7 +122,7 @@ install -m 755 contrib/bbreporter/bbreporter.py \
# Client
touch $RPM_BUILD_ROOT%{_sysconfdir}/box/bbackupd.conf
-install -m 755 contrib/%{dist}/bbackupd $RPM_BUILD_ROOT%{init_dir}
+install -m 755 contrib/%{distribution}/bbackupd $RPM_BUILD_ROOT%{init_dir}
%if %{is_suse}
ln -s ../../%{init_dir}/bbackupd $RPM_BUILD_ROOT%{_sbindir}/rcbbackupd
%endif
@@ -142,7 +135,7 @@ install %{client_dir}/bbackupd-config $RPM_BUILD_ROOT%{_sbindir}
# Server
touch $RPM_BUILD_ROOT%{_sysconfdir}/box/bbstored.conf
touch $RPM_BUILD_ROOT%{_sysconfdir}/box/raidfile.conf
-install -m 755 contrib/%{dist}/bbstored $RPM_BUILD_ROOT%{init_dir}
+install -m 755 contrib/%{distribution}/bbstored $RPM_BUILD_ROOT%{init_dir}
%if %{is_suse}
ln -s ../../%{init_dir}/bbstored $RPM_BUILD_ROOT%{_sbindir}/rcbbstored
%endif
@@ -225,6 +218,9 @@ rm -rf $RPM_BUILD_ROOT
%doc %{_docdir}/%{ident}/bbreporter
%changelog
+* Thu Apr 23 2009 Martin Ebourne <martin@zepler.org>
+- Use dist tag in version
+
* Thu May 29 2008 Martin Ebourne <martin@zepler.org>
- Fix paths to bbreporter files
diff --git a/distribution/COMMON-MANIFEST.txt b/distribution/COMMON-MANIFEST.txt
index b6f4b6d7..6753c886 100644
--- a/distribution/COMMON-MANIFEST.txt
+++ b/distribution/COMMON-MANIFEST.txt
@@ -1,5 +1,10 @@
+LICENSE-DUAL.txt
+
+LICENSE DUAL
+
RUN ./bootstrap
RUN cd docs; make
+
lib/common
lib/crypto
lib/server
@@ -13,7 +18,10 @@ test/crypto
test/compress
test/win32
docs/api-notes
+docs/api-notes/common
docs/api-notes/common/lib_common
+docs/api-notes/common/lib_common.txt
+docs/api-notes/common/lib_compress
docs/api-notes/common/lib_crypto
docs/api-notes/common/lib_server
MKDIR infrastructure
@@ -26,11 +34,14 @@ infrastructure/printversion.pl
infrastructure/BoxPlatform.pm.in
infrastructure/mingw
infrastructure/msvc
-NO-LICENSE config.sub
-NO-LICENSE config.guess
bootstrap
configure.ac
configure
parcels.txt
runtest.pl.in
-NO-LICENSE-IN-DIR infrastructure/m4
+COPYING.txt
+
+LICENSE none
+config.sub
+config.guess
+infrastructure/m4
diff --git a/distribution/boxbackup/DISTRIBUTION-MANIFEST.txt b/distribution/boxbackup/DISTRIBUTION-MANIFEST.txt
index 2147e6e3..3677d376 100644
--- a/distribution/boxbackup/DISTRIBUTION-MANIFEST.txt
+++ b/distribution/boxbackup/DISTRIBUTION-MANIFEST.txt
@@ -1,7 +1,14 @@
+LICENSE-GPL.txt
+
+LICENSE DUAL
lib/intercept
lib/raidfile
+lib/httpserver
test/raidfile
test/raidfile/testfiles
+test/httpserver
+
+LICENSE GPL
lib/backupclient
lib/backupstore
bin/bbstored
@@ -11,6 +18,7 @@ bin/bbackupd/win32
bin/bbackupquery
bin/bbackupctl
bin/bbackupobjdump
+bin/s3simulator
test/backupstore
test/backupstore/testfiles
test/backupstorefix
@@ -19,21 +27,31 @@ test/backupstorepatch
test/bbackupd
test/bbackupd/testfiles
test/backupdiff
+test/httpserver/testfiles
+test/httpserver/testfiles/photos
docs/Makefile
docs/tools
+
+LICENSE DUAL
docs/api-notes
-docs/api-notes/raidfile/lib_raidfile
+docs/api-notes/raidfile
+docs/api-notes/raidfile/lib_raidfile.txt
+
+LICENSE GPL
+docs/api-notes/backup
+
+docs/images
docs/htmlguide
docs/htmlguide/adminguide
docs/htmlguide/images
docs/htmlguide/instguide
-docs/htmlguide/manpages
+docs/htmlguide/man-html
docs/man
MKDIR docs/docbook
docs/docbook/ExceptionCodes.xml
docs/docbook/adminguide.xml
docs/docbook/bb-book.xsl
-docs/docbook/bb-man.xsl.tmpl
+docs/docbook/bb-man.xsl
docs/docbook/bb-nochunk-book.xsl
docs/docbook/bbackupctl.xml
docs/docbook/bbackupd-config.xml
@@ -50,20 +68,28 @@ docs/docbook/raidfile-config.xml
docs/docbook/raidfile.conf.xml
docs/docbook/html
docs/docbook/html/images
-TODO.txt
+docs/xsl-generic
+docs/xsl-generic/manpages
+docs/xsl-generic/lib
+docs/xsl-generic/common
+docs/xsl-generic/html
+docs/xsl-generic/highlighting
BUGS.txt
contrib
-NO-LICENSE-IN-DIR contrib/debian
-NO-LICENSE-IN-DIR contrib/mac_osx
-NO-LICENSE-IN-DIR contrib/redhat
-NO-LICENSE-IN-DIR contrib/rpm
+
+contrib/bbadmin
+contrib/bbreporter
+contrib/debian
+contrib/mac_osx
+contrib/redhat
+contrib/rpm
REPLACE-VERSION-IN contrib/rpm/boxbackup.spec
-NO-LICENSE-IN-DIR contrib/solaris
-NO-LICENSE-IN-DIR contrib/suse
-NO-LICENSE-IN-DIR contrib/bbreporter
-NO-LICENSE-IN-DIR contrib/windows
-NO-LICENSE-IN-DIR contrib/windows/installer
-NO-LICENSE-IN-DIR contrib/windows/installer/tools
+contrib/solaris
+contrib/suse
+contrib/windows
+contrib/windows/installer
+contrib/windows/installer/tools
+
infrastructure/msvc
-NO-LICENSE-IN-DIR infrastructure/msvc/2003
-NO-LICENSE-IN-DIR infrastructure/msvc/2005
+infrastructure/msvc/2003
+infrastructure/msvc/2005
diff --git a/distribution/boxbackup/LICENSE.txt b/distribution/boxbackup/LICENSE.txt
deleted file mode 100644
index a03851b8..00000000
--- a/distribution/boxbackup/LICENSE.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-
-Copyright (c) 2003 - 2008
- Ben Summers and contributors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. All use of this software and associated advertising materials must
- display the following acknowledgment:
- This product includes software developed by Ben Summers.
-4. The names of the Authors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-[Where legally impermissible the Authors do not disclaim liability for
-direct physical injury or death caused solely by defects in the software
-unless it is modified by a third party.]
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-
-
diff --git a/distribution/boxbackup/VERSION.txt b/distribution/boxbackup/VERSION.txt
index 990d8ebe..3d50f849 100644
--- a/distribution/boxbackup/VERSION.txt
+++ b/distribution/boxbackup/VERSION.txt
@@ -1,2 +1,2 @@
-0.11_USE_SVN_VERSION
+0.11rc8
boxbackup
diff --git a/docs/Makefile b/docs/Makefile
index f337fd86..c4a63671 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -1,8 +1,71 @@
+# Process DocBook to HTML
+# This makefile is a bit obfuscated so that it works correctly on both
+# BSD and GNU make. Some parts apply to one version of make and not the
+# other; these are marked by comments.
-# Process DocBook to HTML
+# The "all" target shouldn't be up here, but the trickery below defines
+# what looks like a rule to GNU make, and so we need to define the actual
+# default target before it.
+
+all: docs
-DBPROC=xsltproc
+DBPROC_COMMAND = xsltproc
+MKDIR_COMMAND = mkdir
+CP_COMMAND = cp
+PERL_COMMAND = perl
+RM_COMMAND = rm -f
+TAR_COMMAND = tar
+GZIP_COMMAND = gzip -f
+GENERATE_SCRIPT = tools/generate_except_xml.pl
+
+DBPROC = $(DBPROC_COMMAND)
+MKDIR = $(MKDIR_COMMAND)
+CP = $(CP_COMMAND)
+GENERATE = $(PERL_COMMAND) $(GENERATE_SCRIPT)
+RM_QUIET = $(RM_COMMAND)
+TAR = $(TAR_COMMAND)
+GZIP = $(GZIP_COMMAND)
+PROGRESS = @ true
+
+# use a GNU make "define" command, that looks like a harmless dummy rule
+# to BSD make, to hide parts of the Makefile from GNU make.
+define IGNORED_BY_GNU_MAKE:
+.if 0
+endef
+
+ # seen by GNU make, not by BSD make
+ ifeq ($(V),)
+ DBPROC = @ echo " [XLSTPROC]" $^ && $(DBPROC_COMMAND) 2>/dev/null
+ GENERATE = @ echo " [GENERATE]" $@ && $(PERL_COMMAND) $(GENERATE_SCRIPT)
+ TAR = @ echo " [TAR] " $@ && $(TAR_COMMAND)
+ GZIP = @ echo " [GZIP] " $< && $(GZIP_COMMAND)
+ RM_QUIET = @ $(RM_COMMAND)
+ PROGRESS = @ echo
+ endif
+
+define IGNORED_BY_GNU_MAKE:
+.endif
+
+.ifndef V
+ # seen by BSD make, not by GNU make
+ DBPROC = @ echo " [XSLTPROC]" $(.ALLSRC) && $(DBPROC_COMMAND) 2>/dev/null
+ GENERATE = @ echo " [GENERATE]" $(.TARGET) && $(PERL_COMMAND) $(GENERATE_SCRIPT)
+ TAR = @ echo " [TAR] " $(.TARGET) && $(TAR_COMMAND)
+ GZIP = @ echo " [GZIP] " $(.TARGET:.gz=) && $(GZIP_COMMAND)
+ RM_QUIET = @ $(RM_COMMAND)
+ PROGRESS = @ echo
+.endif
+
+# neither .endif nor endef can be followed by a colon; each creates
+# warnings or errors in one or other version of make. we need some
+# magic to make them both work. Luckily, .endfor ignores the colon.
+
+.for DUMMY in $(NO_SUCH_VARIABLE)
+endef
+.endfor :
+
+PROGRESS_RM = $(PROGRESS) " [RM] "
DOCBOOK_DIR = docbook
HTML_DIR = htmlguide
@@ -15,8 +78,6 @@ MANXSL = $(DOCBOOK_DIR)/bb-man.xsl
VPATH = $(DOCBOOK_DIR)
.SUFFIXES: .html .xml .gz .1 .5 .8
-all: docs
-
docs: instguide adminguide manpages
@mkdir -p $(HTML_DIR)/images
@cp $(DOCBOOK_DIR)/html/images/*.png $(HTML_DIR)/images/.
@@ -25,36 +86,23 @@ docs: instguide adminguide manpages
adminguide: $(DOCBOOK_DIR)/ExceptionCodes.xml $(HTML_DIR)/adminguide/index.html
-# all sources ($>) is exactly the right args for xsltproc
+# $^ gives all sources on GNU make, and nothing on BSD make
+# $> gives all sources on BSD make, and nothing on GNU make
$(HTML_DIR)/adminguide/index.html: $(BOOKXSL) $(DOCBOOK_DIR)/adminguide.xml
- $(DBPROC) -o $(HTML_DIR)/adminguide/ $>
+ $(DBPROC) -o $(HTML_DIR)/adminguide/ $^ $>
instguide: $(HTML_DIR)/instguide/index.html
$(HTML_DIR)/instguide/index.html: $(BOOKXSL) $(DOCBOOK_DIR)/instguide.xml
- $(DBPROC) -o $(HTML_DIR)/instguide/ $>
+ $(DBPROC) -o $(HTML_DIR)/instguide/ $^ $>
-# $< is empty on BSD make when making this rule, $> has all sources
-# $< has the target on GNU make, $> is empty
+# On BSD make, $> contains all sources and $^ is empty
+# On GNU make, $^ contains all sources and $> is empty
$(DOCBOOK_DIR)/ExceptionCodes.xml: ../ExceptionCodes.txt
- perl tools/generate_except_xml.pl $< $> $@
+ $(GENERATE) $> $^ $@
manpages: man-dirs man-nroff man-html
-xslt: $(MANXSL)
-
-$(MANXSL): $(MANXSL).tmpl
- @if [ -f /usr/local/share/xsl/docbook/manpages/docbook.xsl ]; then \
- DOCBOOK=file:///usr/local/share/xsl/docbook/manpages/docbook.xsl; \
- elif [ -f /opt/local/share/xsl/docbook-xsl/manpages/docbook.xsl ]; then \
- DOCBOOK=file:///opt/local/share/xsl/docbook-xsl/manpages/docbook.xsl; \
- elif [ -f /usr/share/sgml/docbook/xsl-stylesheets/manpages/docbook.xsl ]; then \
- DOCBOOK=file:///usr/share/sgml/docbook/xsl-stylesheets/manpages/docbook.xsl; \
- else \
- DOCBOOK=http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl; \
- fi; \
- sed -e "s,%%DOCBOOK%%,$${DOCBOOK}," $(MANXSL).tmpl > $(MANXSL)
-
man-dirs: man/.there $(HTML_DIR)/man-html/.there
$(HTML_DIR)/man-html/.there:
@@ -80,50 +128,56 @@ HTML_FILES = $(HTML_FILES_2:%=$(HTML_DIR)/man-html/%)
man-html: $(HTML_FILES)
+# $^ gives all sources on GNU make, and nothing on BSD make
+
+# GNU make
+$(HTML_DIR)/man-html/%.html: $(NOCHUNKBOOKXSL) $(DOCBOOK_DIR)/%.xml
+ $(DBPROC) -o $@ $^
+
# GNU make
-$(HTML_DIR)/man-html/%.html: $(DOCBOOK_DIR)/%.xml $(NOCHUNKBOOKXSL)
- $(DBPROC) -o $@ $(NOCHUNKBOOKXSL) $<
+$(MAN_DIR)/%.8: $(MANXSL) $(DOCBOOK_DIR)/%.xml
+ $(DBPROC) -o $@ $^
-# Before running xsltproc to generate manual pages, we need to check
-# that $(MANXSL) has been built. We don't want to add it to dependencies,
-# because that would cause # the man pages to try to be rebuilt even if
-# they already exist if the date of the xslt file changes, and that
-# requires xsltproc, which negates the point of precompiling them for
-# distribution users.
+# GNU make
+$(MAN_DIR)/%.8.gz: $(MAN_DIR)/%.8
+ $(GZIP) $<
# GNU make
-$(MAN_DIR)/%.8.gz: $(DOCBOOK_DIR)/%.xml
- $(MAKE) xslt
- $(DBPROC) -o $(@:.gz=) $(MANXSL) $<
- gzip $(@:.gz=)
+$(MAN_DIR)/%.5: $(MANXSL) $(DOCBOOK_DIR)/%.xml $(MANXSL)
+ $(DBPROC) -o $@ $^
# GNU make
-$(MAN_DIR)/%.5.gz: $(DOCBOOK_DIR)/%.xml
- $(MAKE) xslt
- $(DBPROC) -o $(@:.gz=) $(MANXSL) $<
- gzip $(@:.gz=)
+$(MAN_DIR)/%.5.gz: $(MAN_DIR)/%.5
+ $(GZIP) $<
# BSD make: the final colon (:) is required to make the .for and .endfor
# lines valid in GNU make. It creates (different) dummy rules in GNU and
# BSD make. Both dummy rules are harmless.
.for MAN_PAGE in $(NROFF_PAGES) :
-$(MAN_DIR)/$(MAN_PAGE).gz: $(DOCBOOK_DIR)/$(MAN_PAGE:R).xml
- $(MAKE) xslt
- $(DBPROC) -o $(.TARGET:.gz=) $(MANXSL) $>
- gzip $(@:.gz=)
+$(MAN_DIR)/$(MAN_PAGE).gz: $(MANXSL) $(DOCBOOK_DIR)/$(MAN_PAGE:R).xml
+ $(DBPROC) -o $(.TARGET:.gz=) $(.ALLSRC)
+ $(GZIP) $(.TARGET:.gz=)
-$(HTML_DIR)/man-html/$(MAN_PAGE:R).html: $(DOCBOOK_DIR)/$(MAN_PAGE:R).xml
- $(DBPROC) -o $@ $(NOCHUNKBOOKXSL) $>
+$(HTML_DIR)/man-html/$(MAN_PAGE:R).html: $(NOCHUNKBOOKXSL) \
+$(DOCBOOK_DIR)/$(MAN_PAGE:R).xml
+ $(DBPROC) -o $(.TARGET) $(.ALLSRC)
.endfor :
-dockit: clean docs
- tar zcf documentation-kit-0.10.tar.gz $(HTML_DIR)/
+dockit: clean docs documentation-kit-0.10.tar.gz
+
+documentation-kit-0.10.tar.gz:
+ $(TAR) zcf documentation-kit-0.10.tar.gz $(HTML_DIR)/
clean:
- rm -f $(HTML_FILES)
- rm -f $(NROFF_FILES)
- rm -f $(DOCBOOK_DIR)/ExceptionCodes.xml
- rm -f documentation-kit-0.10.tar.gz
- rm -f $(MANXSL)
+ $(PROGRESS_RM) "$(HTML_DIR)/man-html/*.html"
+ $(RM_QUIET) $(HTML_FILES)
+
+ $(PROGRESS_RM) "$(MAN_DIR)/*.[58].gz"
+ $(RM_QUIET) $(NROFF_FILES)
+ $(PROGRESS_RM) "$(DOCBOOK_DIR)/ExceptionCodes.xml"
+ $(RM_QUIET) $(DOCBOOK_DIR)/ExceptionCodes.xml
+
+ $(PROGRESS_RM) "documentation-kit-0.10.tar.gz"
+ $(RM_QUIET) documentation-kit-0.10.tar.gz
diff --git a/docs/api-notes/win32_build_on_cygwin_using_mingw.txt b/docs/api-notes/win32_build_on_cygwin_using_mingw.txt
index dccb6be0..9c82cf76 100644
--- a/docs/api-notes/win32_build_on_cygwin_using_mingw.txt
+++ b/docs/api-notes/win32_build_on_cygwin_using_mingw.txt
@@ -18,7 +18,7 @@ Make sure to select the following packages during installation:
* Devel/make
* Devel/mingw-runtime
* Lib/libxml2
- * Lib/libxslt
+ * Lib/libxslt (for xsltproc)
* Mingw/mingw-zlib
* Perl/Perl
diff --git a/docs/docbook/bb-man.xsl.tmpl b/docs/docbook/bb-man.xsl
index e20eedd5..0f9e5c75 100644
--- a/docs/docbook/bb-man.xsl.tmpl
+++ b/docs/docbook/bb-man.xsl
@@ -2,7 +2,7 @@
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<xsl:import href="%%DOCBOOK%%"/>
+<xsl:import href="../xsl-generic/manpages/docbook.xsl"/>
<xsl:param name="chunk.section.depth" select="'0'"/>
diff --git a/docs/docbook/bb-nochunk-book.xsl b/docs/docbook/bb-nochunk-book.xsl
index 86574122..6099256c 100644
--- a/docs/docbook/bb-nochunk-book.xsl
+++ b/docs/docbook/bb-nochunk-book.xsl
@@ -2,7 +2,7 @@
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
+<xsl:import href="../xsl-generic/html/docbook.xsl"/>
<xsl:param name="html.stylesheet" select="'../bbdoc-man.css'"/>
<xsl:param name="chunk.section.depth" select="'0'"/>
diff --git a/docs/xsl-generic/VERSION b/docs/xsl-generic/VERSION
new file mode 100644
index 00000000..14b04f23
--- /dev/null
+++ b/docs/xsl-generic/VERSION
@@ -0,0 +1,113 @@
+<?xml version='1.0'?> <!-- -*- nxml -*- vim: set foldlevel=2: -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fm="http://freshmeat.net/projects/freshmeat-submit/"
+ xmlns:sf="http://sourceforge.net/"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ exclude-result-prefixes="fm sf"
+ version='1.0'>
+
+<xsl:output omit-xml-declaration="yes"/>
+
+<xsl:param name="get"/>
+<xsl:param name="VERSION" select="string(document('')//fm:Version[1])"/>
+<xsl:param name="Tag" select="concat('V',translate(string(document('')//fm:Version[1]),'.',''))"/>
+<xsl:param name="DistroTitle" select="string(document('')//fm:Branch[1])"/>
+<xsl:param name="sf-relid" select="0"/>
+
+<xsl:param name="DistroName">docbook-xsl</xsl:param>
+<xsl:param name="PreviousRelease">1.72.0</xsl:param>
+<xsl:param name="PreviousReleaseRevision">6549</xsl:param>
+<xsl:param name="Revision">$Revision: 7388 $</xsl:param>
+<xsl:param name="VersionFileURL">$URL: https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl/VERSION $</xsl:param>
+
+<xsl:strip-space elements="fm:*"/>
+
+<fm:project>
+ <fm:Project>DocBook</fm:Project>
+ <fm:Branch>XSL Stylesheets</fm:Branch>
+ <fm:Version>1.73.2</fm:Version>
+<!--
+ <fm:License>MIT/X Consortium License</fm:License>
+-->
+ <fm:Release-Focus>
+<!-- * Initial freshmeat announcement -->
+<!-- * Documentation -->
+<!-- * Code cleanup -->
+<!-- * Minor feature enhancements -->
+<!-- * Major feature enhancements -->
+Minor bugfixes
+<!-- * Major bugfixes -->
+<!-- * Minor security fixes -->
+<!-- * Major security fixes -->
+ </fm:Release-Focus>
+ <fm:Home-Page-URL>http://sourceforge.net/projects/docbook/</fm:Home-Page-URL>
+ <fm:Gzipped-Tar-URL>http://prdownloads.sourceforge.net/docbook/{DISTRONAME-VERSION}.tar.gz?download</fm:Gzipped-Tar-URL>
+ <fm:Zipped-Tar-URL>http://prdownloads.sourceforge.net/docbook/{DISTRONAME-VERSION}.zip?download</fm:Zipped-Tar-URL>
+ <fm:Bzipped-Tar-URL>http://prdownloads.sourceforge.net/docbook/{DISTRONAME-VERSION}.bz2?download</fm:Bzipped-Tar-URL>
+ <fm:Changelog-URL>http://sourceforge.net/project/shownotes.php?release_id={SFRELID}</fm:Changelog-URL>
+ <fm:CVS-URL>http://docbook.svn.sourceforge.net/viewvc/docbook/</fm:CVS-URL>
+ <fm:Mailing-List-URL>http://lists.oasis-open.org/archives/docbook-apps/</fm:Mailing-List-URL>
+ <fm:Changes>This is a bug-fix update to the 1.73.1 release.
+</fm:Changes>
+</fm:project>
+
+<xsl:template match="/" priority="-100">
+ <xsl:choose>
+ <xsl:when test="$get = 'Tag'">
+ <xsl:value-of select="$Tag"/>
+ </xsl:when>
+ <xsl:when test="$get = 'PreviousRelease'">
+ <xsl:value-of select="$PreviousRelease"/>
+ </xsl:when>
+ <xsl:when test="$get = 'PreviousReleaseRevision'">
+ <xsl:value-of select="$PreviousReleaseRevision"/>
+ </xsl:when>
+ <xsl:when test="$get = 'DistroTitle'">
+ <xsl:value-of select="$DistroTitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$sf-relid = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>You must specify the sf-relid as a parameter.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:apply-templates select="//fm:project"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="fm:project">
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="fm:Changes" mode="text"/>
+</xsl:template>
+
+<xsl:template match="fm:Changes"/>
+
+<xsl:template match="fm:Gzipped-Tar-URL|fm:Zipped-Tar-URL|fm:Bzipped-Tar-URL">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="substring-before(., '{DISTRONAME-VERSION}')"/>
+ <xsl:value-of select="concat($DistroName, '-', $VERSION)"/>
+ <xsl:value-of select="substring-after(., '{DISTRONAME-VERSION}')"/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="fm:Changelog-URL">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="substring-before(., '{SFRELID}')"/>
+ <xsl:value-of select="$sf-relid"/>
+ <xsl:value-of select="substring-after(., '{SFRELID}')"/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="fm:*">
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/af.xml b/docs/xsl-generic/common/af.xml
new file mode 100644
index 00000000..a60fe6a3
--- /dev/null
+++ b/docs/xsl-generic/common/af.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="af" english-language-name="Afrikaans">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/af.xml -->
+<!-- * -->
+<!-- * E-mail the edited af.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Samevatting"/>
+<l:gentext key="abstract" text="samevatting"/>
+<l:gentext key="Answer" text="Antwoord:"/>
+<l:gentext key="answer" text="antwoord:"/>
+<l:gentext key="Appendix" text="Aanhangsel"/>
+<l:gentext key="appendix" text="aanhangsel"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="artikel"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografie"/>
+<l:gentext key="bibliography" text="bibliografie"/>
+<l:gentext key="Book" text="Boek"/>
+<l:gentext key="book" text="boek"/>
+<l:gentext key="CAUTION" text="PAS OP"/>
+<l:gentext key="Caution" text="Pas op"/>
+<l:gentext key="caution" text="pas op"/>
+<l:gentext key="Chapter" text="Hoofdstuk"/>
+<l:gentext key="chapter" text="hoofdstuk"/>
+<l:gentext key="Colophon" text="Kolifon"/>
+<l:gentext key="colophon" text="kolifon"/>
+<l:gentext key="Copyright" text="Kopie reg"/>
+<l:gentext key="copyright" text="kopie reg"/>
+<l:gentext key="Dedication" text="Opgedra aan"/>
+<l:gentext key="dedication" text="opgedra aan"/>
+<l:gentext key="Edition" text="Uitgawe"/>
+<l:gentext key="edition" text="uitgawe"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Vergelyking"/>
+<l:gentext key="equation" text="vergelyking"/>
+<l:gentext key="Example" text="Voorbeeld"/>
+<l:gentext key="example" text="voorbeeld"/>
+<l:gentext key="Figure" text="Figuur"/>
+<l:gentext key="figure" text="figuur"/>
+<l:gentext key="Glossary" text="Woordlys"/>
+<l:gentext key="glossary" text="woordlys"/>
+<l:gentext key="GlossSee" text="WoordelysSien"/>
+<l:gentext key="glosssee" text="woordelyssien"/>
+<l:gentext key="GlossSeeAlso" text="WoordelysSienOok"/>
+<l:gentext key="glossseealso" text="woordelyssienook"/>
+<l:gentext key="IMPORTANT" text="BELANGRIK"/>
+<l:gentext key="important" text="belangrik"/>
+<l:gentext key="Important" text="Belangrik"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="RegsKennisgewing"/>
+<l:gentext key="legalnotice" text="regskennisgewing"/>
+<l:gentext key="MsgAud" text="Teikengroep"/>
+<l:gentext key="msgaud" text="teikengroep"/>
+<l:gentext key="MsgLevel" text="Vlak"/>
+<l:gentext key="msglevel" text="vlak"/>
+<l:gentext key="MsgOrig" text="Herkoms"/>
+<l:gentext key="msgorig" text="herkoms"/>
+<l:gentext key="NOTE" text="OPMERKING"/>
+<l:gentext key="Note" text="Opmerking"/>
+<l:gentext key="note" text="opmerking"/>
+<l:gentext key="Part" text="Deel"/>
+<l:gentext key="part" text="deel"/>
+<l:gentext key="Preface" text="Voorwoord"/>
+<l:gentext key="preface" text="voorwoord"/>
+<l:gentext key="Procedure" text="Prosedure"/>
+<l:gentext key="procedure" text="prosedure"/>
+<l:gentext key="ProductionSet" text="ProduksieStel"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Uitgegee"/>
+<l:gentext key="published" text="uitgegee"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Vraag et Antwoord"/>
+<l:gentext key="qandadiv" text="Vraag et Antwoord"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Vraag:"/>
+<l:gentext key="question" text="vraag:"/>
+<l:gentext key="RefEntry" text="Verwysingslemma"/>
+<l:gentext key="refentry" text="verwysingslemma"/>
+<l:gentext key="Reference" text="Verwysing"/>
+<l:gentext key="reference" text="verwysing"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Verwysingsnaam"/>
+<l:gentext key="refname" text="verwysingsnaam"/>
+<l:gentext key="RefSection" text="Verwysingsparagraaf"/>
+<l:gentext key="refsection" text="verwysingsparagraaf"/>
+<l:gentext key="RefSynopsisDiv" text="Verwysingsamevatting"/>
+<l:gentext key="refsynopsisdiv" text="verwysingsamevatting"/>
+<l:gentext key="RevHistory" text="Hersiening geskiedenis"/>
+<l:gentext key="revhistory" text="hersiening geskiedenis"/>
+<l:gentext key="revision" text="hersiening"/>
+<l:gentext key="Revision" text="Hersiening"/>
+<l:gentext key="sect1" text="Paragraaf"/>
+<l:gentext key="sect2" text="Paragraaf"/>
+<l:gentext key="sect3" text="Paragraaf"/>
+<l:gentext key="sect4" text="Paragraaf"/>
+<l:gentext key="sect5" text="Paragraaf"/>
+<l:gentext key="section" text="paragraaf"/>
+<l:gentext key="Section" text="Paragraaf"/>
+<l:gentext key="see" text="sien"/>
+<l:gentext key="See" text="Sien"/>
+<l:gentext key="seealso" text="sien ook"/>
+<l:gentext key="Seealso" text="Sien ook"/>
+<l:gentext key="SeeAlso" text="Sien Ook"/>
+<l:gentext key="set" text="versameling"/>
+<l:gentext key="Set" text="Versameling"/>
+<l:gentext key="setindex" text="versamelingindeks"/>
+<l:gentext key="SetIndex" text="VersamelingIndeks"/>
+<l:gentext key="Sidebar" text="Kantbalk"/>
+<l:gentext key="sidebar" text="kantbalk"/>
+<l:gentext key="step" text="stap"/>
+<l:gentext key="Step" text="Stap"/>
+<l:gentext key="table" text="tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="leidraad"/>
+<l:gentext key="TIP" text="LEIDRAAD"/>
+<l:gentext key="Tip" text="Leidraad"/>
+<l:gentext key="Warning" text="Waarskuwing"/>
+<l:gentext key="warning" text="waarskuwing"/>
+<l:gentext key="WARNING" text="WAARSKUWING"/>
+<l:gentext key="and" text="en"/>
+<l:gentext key="by" text="deur"/>
+<l:gentext key="Edited" text="Geredigeer"/>
+<l:gentext key="edited" text="geredigeer"/>
+<l:gentext key="Editedby" text="Geredigeer deur"/>
+<l:gentext key="editedby" text="geredigeer deur"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="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="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="lys van vergelykings"/>
+<l:gentext key="ListofEquations" text="Lys van vergelykings"/>
+<l:gentext key="ListofExamples" text="Lys van voorbeelde"/>
+<l:gentext key="listofexamples" text="lys van voorbeelde"/>
+<l:gentext key="ListofFigures" text="Lys van figure"/>
+<l:gentext key="listoffigures" text="lys van figure"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="lys van tabelle"/>
+<l:gentext key="ListofTables" text="Lys van tabelle"/>
+<l:gentext key="ListofUnknown" text="Lys van onbekende tipes"/>
+<l:gentext key="listofunknown" text="lys van onbekende tipes"/>
+<l:gentext key="nav-home" text="Begin"/>
+<l:gentext key="nav-next" text="Volgende"/>
+<l:gentext key="nav-next-sibling" text="Verder vooruit"/>
+<l:gentext key="nav-prev" text="Terug"/>
+<l:gentext key="nav-prev-sibling" text="Verder terug"/>
+<l:gentext key="nav-up" text="Boontoe"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Proef"/>
+<l:gentext key="above" text="bo"/>
+<l:gentext key="below" text="onder"/>
+<l:gentext key="sectioncalled" text="die seksie genaamd"/>
+<l:gentext key="index symbols" text="indeks simbole"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Aanhangsel %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Hoofdstuk %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Vergelyking %n. %t"/>
+<l:template name="example" text="Voorbeeld %n. %t"/>
+<l:template name="figure" text="Figuur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prosedure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ProduksieStel %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Aanhangsel %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Hoofdstuk %n. %t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Vraag: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Vraag: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="die seksie genaamd “%t”"/>
+<l:template name="refsection" text="die seksie genaamd “%t”"/>
+<l:template name="refsect1" text="die seksie genaamd “%t”"/>
+<l:template name="refsect2" text="die seksie genaamd “%t”"/>
+<l:template name="refsect3" text="die seksie genaamd “%t”"/>
+<l:template name="sect1" text="die seksie genaamd “%t”"/>
+<l:template name="sect2" text="die seksie genaamd “%t”"/>
+<l:template name="sect3" text="die seksie genaamd “%t”"/>
+<l:template name="sect4" text="die seksie genaamd “%t”"/>
+<l:template name="sect5" text="die seksie genaamd “%t”"/>
+<l:template name="section" text="die seksie genaamd “%t”"/>
+<l:template name="simplesect" text="die seksie genaamd “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Antwoord: %n"/>
+<l:template name="appendix" text="Aanhangsel %n"/>
+<l:template name="bridgehead" text="Paragraaf %n"/>
+<l:template name="chapter" text="Hoofdstuk %n"/>
+<l:template name="equation" text="Vergelyking %n"/>
+<l:template name="example" text="Voorbeeld %n"/>
+<l:template name="figure" text="Figuur %n"/>
+<l:template name="part" text="Deel %n"/>
+<l:template name="procedure" text="Prosedure %n"/>
+<l:template name="productionset" text="ProduksieStel %n"/>
+<l:template name="qandadiv" text="Vraag et Antwoord %n"/>
+<l:template name="qandaentry" text="Vraag: %n"/>
+<l:template name="question" text="Vraag: %n"/>
+<l:template name="sect1" text="Paragraaf %n"/>
+<l:template name="sect2" text="Paragraaf %n"/>
+<l:template name="sect3" text="Paragraaf %n"/>
+<l:template name="sect4" text="Paragraaf %n"/>
+<l:template name="sect5" text="Paragraaf %n"/>
+<l:template name="section" text="Paragraaf %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Aanhangsel %n, %t"/>
+<l:template name="bridgehead" text="Paragraaf %n, “%t”"/>
+<l:template name="chapter" text="Hoofdstuk %n, %t"/>
+<l:template name="equation" text="Vergelyking %n, “%t”"/>
+<l:template name="example" text="Voorbeeld %n, “%t”"/>
+<l:template name="figure" text="Figuur %n, “%t”"/>
+<l:template name="part" text="Deel %n, “%t”"/>
+<l:template name="procedure" text="Prosedure %n, “%t”"/>
+<l:template name="productionset" text="ProduksieStel %n, “%t”"/>
+<l:template name="qandadiv" text="Vraag et Antwoord %n, “%t”"/>
+<l:template name="refsect1" text="die seksie genaamd “%t”"/>
+<l:template name="refsect2" text="die seksie genaamd “%t”"/>
+<l:template name="refsect3" text="die seksie genaamd “%t”"/>
+<l:template name="refsection" text="die seksie genaamd “%t”"/>
+<l:template name="sect1" text="Paragraaf %n, “%t”"/>
+<l:template name="sect2" text="Paragraaf %n, “%t”"/>
+<l:template name="sect3" text="Paragraaf %n, “%t”"/>
+<l:template name="sect4" text="Paragraaf %n, “%t”"/>
+<l:template name="sect5" text="Paragraaf %n, “%t”"/>
+<l:template name="section" text="Paragraaf %n, “%t”"/>
+<l:template name="simplesect" text="die seksie genaamd “%t”"/>
+<l:template name="table" text="Tabel %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" en "/>
+<l:template name="seplast" text=", en "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="WoordelysSien %t"/>
+<l:template name="seealso" text="WoordelysSienOok %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Teikengroep: "/>
+<l:template name="MsgLevel" text="Vlak: "/>
+<l:template name="MsgOrig" text="Herkoms: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0436 Afrikaans"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/am.xml b/docs/xsl-generic/common/am.xml
new file mode 100644
index 00000000..10be46ee
--- /dev/null
+++ b/docs/xsl-generic/common/am.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="am" english-language-name="Amharic">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/am.xml -->
+<!-- * -->
+<!-- * E-mail the edited am.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ረቂቅ"/>
+<l:gentext key="abstract" text="ረቂቅ"/>
+<l:gentext key="Answer" text="መ፦"/>
+<l:gentext key="answer" text="መ፦"/>
+<l:gentext key="Appendix" text="ተጨማሪ"/>
+<l:gentext key="appendix" text="ተጨማሪ"/>
+<l:gentext key="Article" text="ጽሑፍ"/>
+<l:gentext key="article" text="ጽሑፍ"/>
+<l:gentext key="Author" text="ደራሲ"/>
+<l:gentext key="Bibliography" text="የመጻሕፍት ዝርዝር"/>
+<l:gentext key="bibliography" text="የመጻሕፍት ዝርዝር"/>
+<l:gentext key="Book" text="መጽሐፍ"/>
+<l:gentext key="book" text="መጽሐፍ"/>
+<l:gentext key="CAUTION" text="ጥንቃቄ"/>
+<l:gentext key="Caution" text="ጥንቃቄ"/>
+<l:gentext key="caution" text="ጥንቃቄ"/>
+<l:gentext key="Chapter" text="ምዕራፍ"/>
+<l:gentext key="chapter" text="ምዕራፍ"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="የቅጂው መብት"/>
+<l:gentext key="copyright" text="የቅጂው መብት"/>
+<l:gentext key="Dedication" text="ለአላማ መሰዋት"/>
+<l:gentext key="dedication" text="ለአላማ መሰዋት"/>
+<l:gentext key="Edition" text="ቅጂ"/>
+<l:gentext key="edition" text="ቅጂ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="እኩሌታ"/>
+<l:gentext key="equation" text="እኩሌታ"/>
+<l:gentext key="Example" text="ለምሳሌ"/>
+<l:gentext key="example" text="ለምሳሌ"/>
+<l:gentext key="Figure" text="ምስል"/>
+<l:gentext key="figure" text="ምስል"/>
+<l:gentext key="Glossary" text="የቃላቶች ፍቺ ዝርዝር"/>
+<l:gentext key="glossary" text="የቃላቶች ፍቺ ዝርዝር"/>
+<l:gentext key="GlossSee" text="ማየት (እይ)"/>
+<l:gentext key="glosssee" text="ማየት (እይ)"/>
+<l:gentext key="GlossSeeAlso" text="…ንም እይ"/>
+<l:gentext key="glossseealso" text="…ንም እይ"/>
+<l:gentext key="IMPORTANT" text="አስፈላጊ"/>
+<l:gentext key="important" text="አስፈላጊ"/>
+<l:gentext key="Important" text="አስፈላጊ"/>
+<l:gentext key="Index" text="ማውጫ"/>
+<l:gentext key="index" text="ማውጫ"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ህጋዊ ማስታወቂያ"/>
+<l:gentext key="legalnotice" text="ህጋዊ ማስታወቂያ"/>
+<l:gentext key="MsgAud" text="ተመልካች"/>
+<l:gentext key="msgaud" text="ተመልካች"/>
+<l:gentext key="MsgLevel" text="ደረጃ"/>
+<l:gentext key="msglevel" text="ደረጃ"/>
+<l:gentext key="MsgOrig" text="ምንጭ"/>
+<l:gentext key="msgorig" text="ምንጭ"/>
+<l:gentext key="NOTE" text="ማስታወሻ"/>
+<l:gentext key="Note" text="ማስታወሻ"/>
+<l:gentext key="note" text="ማስታወሻ"/>
+<l:gentext key="Part" text="ክፍል"/>
+<l:gentext key="part" text="ክፍል"/>
+<l:gentext key="Preface" text="መቅድም"/>
+<l:gentext key="preface" text="መቅድም"/>
+<l:gentext key="Procedure" text="ቅደም ተከተል"/>
+<l:gentext key="procedure" text="ቅደም ተከተል"/>
+<l:gentext key="ProductionSet" text="ምርት"/>
+<l:gentext key="PubDate" text="የታተመበት ቀን"/>
+<l:gentext key="pubdate" text="የታተመበት ቀን"/>
+<l:gentext key="Published" text="ታትሟል"/>
+<l:gentext key="published" text="ታትሟል"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="ጥያቄ እና መልስ"/>
+<l:gentext key="qandadiv" text="ጥያቄ እና መልስ"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ጥ፦"/>
+<l:gentext key="question" text="ጥ፦"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="ማጣቀሻ"/>
+<l:gentext key="reference" text="ማጣቀሻ"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="ስም"/>
+<l:gentext key="refname" text="ስም"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="መግለጫ"/>
+<l:gentext key="refsynopsisdiv" text="መግለጫ"/>
+<l:gentext key="RevHistory" text="የተሻሻለ ታሪክ"/>
+<l:gentext key="revhistory" text="የተሻሻለ ታሪክ"/>
+<l:gentext key="revision" text="የተሻሻለ"/>
+<l:gentext key="Revision" text="የተሻሻለ"/>
+<l:gentext key="sect1" text="ክፍል"/>
+<l:gentext key="sect2" text="ክፍል"/>
+<l:gentext key="sect3" text="ክፍል"/>
+<l:gentext key="sect4" text="ክፍል"/>
+<l:gentext key="sect5" text="ክፍል"/>
+<l:gentext key="section" text="ክፍል"/>
+<l:gentext key="Section" text="ክፍል"/>
+<l:gentext key="see" text="ማየት (እይ)"/>
+<l:gentext key="See" text="ማየት (እይ)"/>
+<l:gentext key="seealso" text="…ንም እይ"/>
+<l:gentext key="Seealso" text="…ንም እይ"/>
+<l:gentext key="SeeAlso" text="…ንም እይ"/>
+<l:gentext key="set" text="አድርግ"/>
+<l:gentext key="Set" text="አድርግ"/>
+<l:gentext key="setindex" text="ማውጫውን ይመልከቱ"/>
+<l:gentext key="SetIndex" text="ማውጫውን ይመልከቱ"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="የጥግ ቋሚ"/>
+<l:gentext key="step" text="ደረጃ"/>
+<l:gentext key="Step" text="ደረጃ"/>
+<l:gentext key="table" text="ሠንጠረዥ"/>
+<l:gentext key="Table" text="ሠንጠረዥ"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="ፍንጭ"/>
+<l:gentext key="TIP" text="ፍንጭ"/>
+<l:gentext key="Tip" text="ፍንጭ"/>
+<l:gentext key="Warning" text="ማስጠንቀቂያ"/>
+<l:gentext key="warning" text="ማስጠንቀቂያ"/>
+<l:gentext key="WARNING" text="ማስጠንቀቂያ"/>
+<l:gentext key="and" text="እና"/>
+<l:gentext key="by" text="በ"/>
+<l:gentext key="Edited" text="የተዘጋጀ"/>
+<l:gentext key="edited" text="የተዘጋጀ"/>
+<l:gentext key="Editedby" text="የተዘጋጀው በ"/>
+<l:gentext key="editedby" text="የተዘጋጀው በ"/>
+<l:gentext key="in" text="ውስጥ"/>
+<l:gentext key="lastlistcomma" text="፣"/>
+<l:gentext key="listcomma" text="፣"/>
+<l:gentext key="nonexistantelement" text="የሌለ መሠረታዊ ነገር"/>
+<l:gentext key="notes" text="ማስታወሻዎች"/>
+<l:gentext key="Notes" text="ማስታወሻዎች"/>
+<l:gentext key="Pgs" text="ገጾች"/>
+<l:gentext key="pgs" text="ገጾች"/>
+<l:gentext key="Revisedby" text="የተሻሻለው በ"/>
+<l:gentext key="revisedby" text="የተሻሻለው በ"/>
+<l:gentext key="TableNotes" text="ማስታወሻዎች"/>
+<l:gentext key="tablenotes" text="ማስታወሻዎች"/>
+<l:gentext key="TableofContents" text="ማውጫ"/>
+<l:gentext key="tableofcontents" text="ማውጫ"/>
+<l:gentext key="unexpectedelementname" text="ያልተጠበቀ የመሠረታዊ ነገር ስም"/>
+<l:gentext key="unsupported" text="ያልተደገፈ"/>
+<l:gentext key="xrefto" text="xref ወደ"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="የእኩሌታዎች ዝርዝር"/>
+<l:gentext key="ListofEquations" text="የእኩሌታዎች ዝርዝር"/>
+<l:gentext key="ListofExamples" text="የምሳሌዎች ዝርዝር"/>
+<l:gentext key="listofexamples" text="የምሳሌዎች ዝርዝር"/>
+<l:gentext key="ListofFigures" text="የምስሎች ዝርዝር"/>
+<l:gentext key="listoffigures" text="የምስሎች ዝርዝር"/>
+<l:gentext key="ListofProcedures" text="የቅደም ተከተሎቹ ዝርዝር"/>
+<l:gentext key="listofprocedures" text="የቅደም ተከተሎቹ ዝርዝር"/>
+<l:gentext key="listoftables" text="የሠንጠረዦቹ ዝርዝር"/>
+<l:gentext key="ListofTables" text="የሠንጠረዦቹ ዝርዝር"/>
+<l:gentext key="ListofUnknown" text="ያልታወቁ ዝርዝር"/>
+<l:gentext key="listofunknown" text="ያልታወቁ ዝርዝር"/>
+<l:gentext key="nav-home" text="መጀመሪያ"/>
+<l:gentext key="nav-next" text="የሚቀጥለው"/>
+<l:gentext key="nav-next-sibling" text="በፍጥነት ወደፊት"/>
+<l:gentext key="nav-prev" text="ያለፈው"/>
+<l:gentext key="nav-prev-sibling" text="በፍጥነት ወደኋላ"/>
+<l:gentext key="nav-up" text="ወደ ላይ"/>
+<l:gentext key="nav-toc" text="ወደ ሲ"/>
+<l:gentext key="Draft" text="ንድፍ"/>
+<l:gentext key="above" text="ከላይ"/>
+<l:gentext key="below" text="ከስር"/>
+<l:gentext key="sectioncalled" text="የክፍሉ መጠሪያ"/>
+<l:gentext key="index symbols" text="ምልክቶች"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ተጨማሪ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="ምዕራፍ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="እኩሌታ %n. %t"/>
+<l:template name="example" text="ለምሳሌ %n. %t"/>
+<l:template name="figure" text="ምስል %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ክፍል %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ቅደም ተከተል %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ምርት %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ሠንጠረዥ %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ተጨማሪ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="ምዕራፍ %n. %t"/>
+<l:template name="part" text="ክፍል %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ጥ፦ %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ጥ፦ %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" በ%o"/>
+<l:template name="olink.page.citation" text=" (ገጽ %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(ገጽ %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" በዶሴው ውስጥ ርዕስ የተሰጠው %o"/>
+<l:template name="pageabbrev" text="(ገጽ %p)"/>
+<l:template name="Page" text="ገጽ %p"/>
+<l:template name="bridgehead" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="refsection" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="refsect1" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="refsect2" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="refsect3" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="sect1" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="sect2" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="sect3" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="sect4" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="sect5" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="section" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="simplesect" text="የክፍሉ መጠሪያ “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="መ፦ %n"/>
+<l:template name="appendix" text="ተጨማሪ %n"/>
+<l:template name="bridgehead" text="ክፍል %n"/>
+<l:template name="chapter" text="ምዕራፍ %n"/>
+<l:template name="equation" text="እኩሌታ %n"/>
+<l:template name="example" text="ለምሳሌ %n"/>
+<l:template name="figure" text="ምስል %n"/>
+<l:template name="part" text="ክፍል %n"/>
+<l:template name="procedure" text="ቅደም ተከተል %n"/>
+<l:template name="productionset" text="ምርት %n"/>
+<l:template name="qandadiv" text="ጥያቄ እና መልስ %n"/>
+<l:template name="qandaentry" text="ጥ፦ %n"/>
+<l:template name="question" text="ጥ፦ %n"/>
+<l:template name="sect1" text="ክፍል %n"/>
+<l:template name="sect2" text="ክፍል %n"/>
+<l:template name="sect3" text="ክፍል %n"/>
+<l:template name="sect4" text="ክፍል %n"/>
+<l:template name="sect5" text="ክፍል %n"/>
+<l:template name="section" text="ክፍል %n"/>
+<l:template name="table" text="ሠንጠረዥ %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ተጨማሪ %n, %t"/>
+<l:template name="bridgehead" text="ክፍል %n, “%t”"/>
+<l:template name="chapter" text="ምዕራፍ %n, %t"/>
+<l:template name="equation" text="እኩሌታ %n, “%t”"/>
+<l:template name="example" text="ለምሳሌ %n, “%t”"/>
+<l:template name="figure" text="ምስል %n, “%t”"/>
+<l:template name="part" text="ክፍል %n, “%t”"/>
+<l:template name="procedure" text="ቅደም ተከተል %n, “%t”"/>
+<l:template name="productionset" text="ምርት %n, “%t”"/>
+<l:template name="qandadiv" text="ጥያቄ እና መልስ %n, “%t”"/>
+<l:template name="refsect1" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="refsect2" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="refsect3" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="refsection" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="sect1" text="ክፍል %n, “%t”"/>
+<l:template name="sect2" text="ክፍል %n, “%t”"/>
+<l:template name="sect3" text="ክፍል %n, “%t”"/>
+<l:template name="sect4" text="ክፍል %n, “%t”"/>
+<l:template name="sect5" text="ክፍል %n, “%t”"/>
+<l:template name="section" text="ክፍል %n, “%t”"/>
+<l:template name="simplesect" text="የክፍሉ መጠሪያ “%t”"/>
+<l:template name="table" text="ሠንጠረዥ %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text="፣ "/>
+<l:template name="sep2" text=" እና "/>
+<l:template name="seplast" text="፣ እና "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ማየት (እይ) %t"/>
+<l:template name="seealso" text="…ንም እይ %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ተመልካች፦ "/>
+<l:template name="MsgLevel" text="ደረጃ፦ "/>
+<l:template name="MsgOrig" text="ምንጭ፦ "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d B Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[ትርጉም፦ "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ጃንዩወሪ"/>
+<l:template name="February" text="ፌብሩወሪ"/>
+<l:template name="March" text="ማርች"/>
+<l:template name="April" text="ኤፕረል"/>
+<l:template name="May" text="ሜይ"/>
+<l:template name="June" text="ጁን"/>
+<l:template name="July" text="ጁላይ"/>
+<l:template name="August" text="ኦገስት"/>
+<l:template name="September" text="ሴፕቴምበር"/>
+<l:template name="October" text="ኦክተውበር"/>
+<l:template name="November" text="ኖቬምበር"/>
+<l:template name="December" text="ዲሴምበር"/>
+<l:template name="Monday" text="ሰኞ"/>
+<l:template name="Tuesday" text="ማክሰኞ"/>
+<l:template name="Wednesday" text="ረቡዕ"/>
+<l:template name="Thursday" text="ሐሙስ"/>
+<l:template name="Friday" text="ዓርብ"/>
+<l:template name="Saturday" text="ቅዳሜ"/>
+<l:template name="Sunday" text="እሑድ"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ጃንዩ"/>
+<l:template name="Feb" text="ፌብሩ"/>
+<l:template name="Mar" text="ማርች"/>
+<l:template name="Apr" text="ኤፕረ"/>
+<l:template name="May" text="ሜይ "/>
+<l:template name="Jun" text="ጁን "/>
+<l:template name="Jul" text="ጁላይ"/>
+<l:template name="Aug" text="ኦገስ"/>
+<l:template name="Sep" text="ሴፕቴ"/>
+<l:template name="Oct" text="ኦክተ"/>
+<l:template name="Nov" text="ኖቬም"/>
+<l:template name="Dec" text="ዲሴም"/>
+<l:template name="Mon" text="ሰኞ "/>
+<l:template name="Tue" text="ማክሰ"/>
+<l:template name="Wed" text="ረቡዕ"/>
+<l:template name="Thu" text="ሐሙስ"/>
+<l:template name="Fri" text="ዓርብ"/>
+<l:template name="Sat" text="ቅዳሜ"/>
+<l:template name="Sun" text="እሑድ"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">ምልክቶች</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/ar.xml b/docs/xsl-generic/common/ar.xml
new file mode 100644
index 00000000..64d6f3bc
--- /dev/null
+++ b/docs/xsl-generic/common/ar.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ar" english-language-name="Arabic">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ar.xml -->
+<!-- * -->
+<!-- * E-mail the edited ar.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="خلاصة"/>
+<l:gentext key="abstract" text="خلاصة"/>
+<l:gentext key="Answer" text="ج:"/>
+<l:gentext key="answer" text="ج:"/>
+<l:gentext key="Appendix" text="ملحق"/>
+<l:gentext key="appendix" text="ملحق"/>
+<l:gentext key="Article" text="مقال"/>
+<l:gentext key="article" text="مقال"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="قائمة المراجع"/>
+<l:gentext key="bibliography" text="قائمة المراجع"/>
+<l:gentext key="Book" text="كتاب"/>
+<l:gentext key="book" text="كتاب"/>
+<l:gentext key="CAUTION" text="تحذير"/>
+<l:gentext key="Caution" text="تحذير"/>
+<l:gentext key="caution" text="تحذير"/>
+<l:gentext key="Chapter" text="فصل"/>
+<l:gentext key="chapter" text="فصل"/>
+<l:gentext key="Colophon" text="الناشر"/>
+<l:gentext key="colophon" text="الناشر"/>
+<l:gentext key="Copyright" text="حقوق النشر"/>
+<l:gentext key="copyright" text="حقوق النشر"/>
+<l:gentext key="Dedication" text="إهداء"/>
+<l:gentext key="dedication" text="إهداء"/>
+<l:gentext key="Edition" text="نسخة"/>
+<l:gentext key="edition" text="نسخة"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="معادلة"/>
+<l:gentext key="equation" text="معادلة"/>
+<l:gentext key="Example" text="مثال"/>
+<l:gentext key="example" text="مثال"/>
+<l:gentext key="Figure" text="شكل"/>
+<l:gentext key="figure" text="شكل"/>
+<l:gentext key="Glossary" text="قاموس المفردات"/>
+<l:gentext key="glossary" text="قاموس المفردات"/>
+<l:gentext key="GlossSee" text="انظر"/>
+<l:gentext key="glosssee" text="انظر"/>
+<l:gentext key="GlossSeeAlso" text="انظر أيضاً"/>
+<l:gentext key="glossseealso" text="انظر أيضاً"/>
+<l:gentext key="IMPORTANT" text="هام"/>
+<l:gentext key="important" text="هام"/>
+<l:gentext key="Important" text="هام"/>
+<l:gentext key="Index" text="فهرس"/>
+<l:gentext key="index" text="فهرس"/>
+<l:gentext key="ISBN" text="الترقيم العالمي القياسي للكتاب"/>
+<l:gentext key="isbn" text="الترقيم العالمي القياسي للكتاب"/>
+<l:gentext key="LegalNotice" text="ملاحظة قانونية"/>
+<l:gentext key="legalnotice" text="ملاحظة قانونية"/>
+<l:gentext key="MsgAud" text="الجمهور"/>
+<l:gentext key="msgaud" text="الجمهور"/>
+<l:gentext key="MsgLevel" text="المستوى"/>
+<l:gentext key="msglevel" text="المستوى"/>
+<l:gentext key="MsgOrig" text="المصدر"/>
+<l:gentext key="msgorig" text="المصدر"/>
+<l:gentext key="NOTE" text="ملاحظة"/>
+<l:gentext key="Note" text="ملاحظة"/>
+<l:gentext key="note" text="ملاحظة"/>
+<l:gentext key="Part" text="جزء"/>
+<l:gentext key="part" text="جزء"/>
+<l:gentext key="Preface" text="مقدمة"/>
+<l:gentext key="preface" text="مقدمة"/>
+<l:gentext key="Procedure" text="إجراء"/>
+<l:gentext key="procedure" text="إجراء"/>
+<l:gentext key="ProductionSet" text="منتج"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="منشور"/>
+<l:gentext key="published" text="منشور"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="س و ج"/>
+<l:gentext key="qandadiv" text="س و ج"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="س:"/>
+<l:gentext key="question" text="س:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="مرجع"/>
+<l:gentext key="reference" text="مرجع"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="الاسم"/>
+<l:gentext key="refname" text="الاسم"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="المختصر"/>
+<l:gentext key="refsynopsisdiv" text="المختصر"/>
+<l:gentext key="RevHistory" text="تاريخ المراجعة"/>
+<l:gentext key="revhistory" text="تاريخ المراجعة"/>
+<l:gentext key="revision" text="مراجعة"/>
+<l:gentext key="Revision" text="مراجعة"/>
+<l:gentext key="sect1" text="قسم"/>
+<l:gentext key="sect2" text="قسم"/>
+<l:gentext key="sect3" text="قسم"/>
+<l:gentext key="sect4" text="قسم"/>
+<l:gentext key="sect5" text="قسم"/>
+<l:gentext key="section" text="قسم"/>
+<l:gentext key="Section" text="قسم"/>
+<l:gentext key="see" text="استعرض"/>
+<l:gentext key="See" text="See" lang="en"/>
+<l:gentext key="seealso" text="استعرض أيضاً"/>
+<l:gentext key="Seealso" text="See also" lang="en"/>
+<l:gentext key="SeeAlso" text="See Also" lang="en"/>
+<l:gentext key="set" text="مجموعة"/>
+<l:gentext key="Set" text="مجموعة"/>
+<l:gentext key="setindex" text="فهرس المجموعة"/>
+<l:gentext key="SetIndex" text="فهرس المجموعة"/>
+<l:gentext key="Sidebar" text="الشريط الجانبي"/>
+<l:gentext key="sidebar" text="الشريط الجانبي"/>
+<l:gentext key="step" text="خطوة"/>
+<l:gentext key="Step" text="خطوة"/>
+<l:gentext key="table" text="جدول"/>
+<l:gentext key="Table" text="جدول"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="فكرة مفيدة"/>
+<l:gentext key="TIP" text="فكرة مفيدة"/>
+<l:gentext key="Tip" text="فكرة مفيدة"/>
+<l:gentext key="Warning" text="تنبيه"/>
+<l:gentext key="warning" text="تنبيه"/>
+<l:gentext key="WARNING" text="تنبيه"/>
+<l:gentext key="and" text="و"/>
+<l:gentext key="by" text="بواسطة"/>
+<l:gentext key="Edited" text="معدل"/>
+<l:gentext key="edited" text="معدل"/>
+<l:gentext key="Editedby" text="معدل بواسطة"/>
+<l:gentext key="editedby" text="معدل بواسطة"/>
+<l:gentext key="in" text="في"/>
+<l:gentext key="lastlistcomma" text="،"/>
+<l:gentext key="listcomma" text="،"/>
+<l:gentext key="nonexistantelement" text="عنصر مفقود"/>
+<l:gentext key="notes" text="ملاحظات"/>
+<l:gentext key="Notes" text="ملاحظات"/>
+<l:gentext key="Pgs" text="صفحات"/>
+<l:gentext key="pgs" text="صفحات"/>
+<l:gentext key="Revisedby" text="تمت المراجعة بواسطة: "/>
+<l:gentext key="revisedby" text="تمت المراجعة بواسطة: "/>
+<l:gentext key="TableNotes" text="ملاحظات"/>
+<l:gentext key="tablenotes" text="ملاحظات"/>
+<l:gentext key="TableofContents" text="قائمة المحتويات"/>
+<l:gentext key="tableofcontents" text="قائمة المحتويات"/>
+<l:gentext key="unexpectedelementname" text="اسم عنصر غير متوقع"/>
+<l:gentext key="unsupported" text="غير مدعوم"/>
+<l:gentext key="xrefto" text="إشارة إلى"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="قائمة المعادلات"/>
+<l:gentext key="ListofEquations" text="قائمة المعادلات"/>
+<l:gentext key="ListofExamples" text="قائمة الأمثلة"/>
+<l:gentext key="listofexamples" text="قائمة الأمثلة"/>
+<l:gentext key="ListofFigures" text="قائمة الأشكال"/>
+<l:gentext key="listoffigures" text="قائمة الأشكال"/>
+<l:gentext key="ListofProcedures" text="قائمة الإجراءات"/>
+<l:gentext key="listofprocedures" text="قائمة الإجراءات"/>
+<l:gentext key="listoftables" text="قائمة الجداول"/>
+<l:gentext key="ListofTables" text="قائمة الجداول"/>
+<l:gentext key="ListofUnknown" text="قائمة المجهولات"/>
+<l:gentext key="listofunknown" text="قائمة المجهولات"/>
+<l:gentext key="nav-home" text="البداية"/>
+<l:gentext key="nav-next" text="التالي"/>
+<l:gentext key="nav-next-sibling" text="إلى الأمام"/>
+<l:gentext key="nav-prev" text="السابق"/>
+<l:gentext key="nav-prev-sibling" text="إلى الخلف"/>
+<l:gentext key="nav-up" text="أعلى"/>
+<l:gentext key="nav-toc" text="الفهرس"/>
+<l:gentext key="Draft" text="مسودة"/>
+<l:gentext key="above" text="أعلى"/>
+<l:gentext key="below" text="فيما يلي"/>
+<l:gentext key="sectioncalled" text="القسم المسمى"/>
+<l:gentext key="index symbols" text="الرموز"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="‐"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ملحق %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="فصل %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="معادلة %n. %t"/>
+<l:template name="example" text="مثال %n. %t"/>
+<l:template name="figure" text="شكل %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="جزء %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="إجراء %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="منتج %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="جدول %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ملحق %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="فصل %n. %t"/>
+<l:template name="part" text="جزء %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="س: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="س: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="القسم المسمى “%t”"/>
+<l:template name="refsection" text="القسم المسمى “%t”"/>
+<l:template name="refsect1" text="القسم المسمى “%t”"/>
+<l:template name="refsect2" text="القسم المسمى “%t”"/>
+<l:template name="refsect3" text="القسم المسمى “%t”"/>
+<l:template name="sect1" text="القسم المسمى “%t”"/>
+<l:template name="sect2" text="القسم المسمى “%t”"/>
+<l:template name="sect3" text="القسم المسمى “%t”"/>
+<l:template name="sect4" text="القسم المسمى “%t”"/>
+<l:template name="sect5" text="القسم المسمى “%t”"/>
+<l:template name="section" text="القسم المسمى “%t”"/>
+<l:template name="simplesect" text="القسم المسمى “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ج: %n"/>
+<l:template name="appendix" text="ملحق %n"/>
+<l:template name="bridgehead" text="قسم %n"/>
+<l:template name="chapter" text="فصل %n"/>
+<l:template name="equation" text="معادلة %n"/>
+<l:template name="example" text="مثال %n"/>
+<l:template name="figure" text="شكل %n"/>
+<l:template name="part" text="جزء %n"/>
+<l:template name="procedure" text="إجراء %n"/>
+<l:template name="productionset" text="منتج %n"/>
+<l:template name="qandadiv" text="س و ج %n"/>
+<l:template name="qandaentry" text="س: %n"/>
+<l:template name="question" text="س: %n"/>
+<l:template name="sect1" text="قسم %n"/>
+<l:template name="sect2" text="قسم %n"/>
+<l:template name="sect3" text="قسم %n"/>
+<l:template name="sect4" text="قسم %n"/>
+<l:template name="sect5" text="قسم %n"/>
+<l:template name="section" text="قسم %n"/>
+<l:template name="table" text="جدول %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ملحق %n, %t"/>
+<l:template name="bridgehead" text="قسم %n, “%t”"/>
+<l:template name="chapter" text="فصل %n, %t"/>
+<l:template name="equation" text="معادلة %n, “%t”"/>
+<l:template name="example" text="مثال %n, “%t”"/>
+<l:template name="figure" text="شكل %n, “%t”"/>
+<l:template name="part" text="جزء %n, “%t”"/>
+<l:template name="procedure" text="إجراء %n, “%t”"/>
+<l:template name="productionset" text="منتج %n, “%t”"/>
+<l:template name="qandadiv" text="س و ج %n, “%t”"/>
+<l:template name="refsect1" text="القسم المسمى “%t”"/>
+<l:template name="refsect2" text="القسم المسمى “%t”"/>
+<l:template name="refsect3" text="القسم المسمى “%t”"/>
+<l:template name="refsection" text="القسم المسمى “%t”"/>
+<l:template name="sect1" text="قسم %n, “%t”"/>
+<l:template name="sect2" text="قسم %n, “%t”"/>
+<l:template name="sect3" text="قسم %n, “%t”"/>
+<l:template name="sect4" text="قسم %n, “%t”"/>
+<l:template name="sect5" text="قسم %n, “%t”"/>
+<l:template name="section" text="قسم %n, “%t”"/>
+<l:template name="simplesect" text="القسم المسمى “%t”"/>
+<l:template name="table" text="جدول %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text="، "/>
+<l:template name="sep2" text=" و "/>
+<l:template name="seplast" text="، و "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="انظر %t"/>
+<l:template name="seealso" text="انظر أيضاً %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="الجمهور: "/>
+<l:template name="MsgLevel" text="المستوى: "/>
+<l:template name="MsgOrig" text="المصدر: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="يناير"/>
+<l:template name="February" text="فبراير"/>
+<l:template name="March" text="مارس"/>
+<l:template name="April" text="أبريل"/>
+<l:template name="May" text="مايو"/>
+<l:template name="June" text="يونيو"/>
+<l:template name="July" text="يوليو"/>
+<l:template name="August" text="أغسطس"/>
+<l:template name="September" text="سبتمبر"/>
+<l:template name="October" text="أكتوبر"/>
+<l:template name="November" text="نوفمبر"/>
+<l:template name="December" text="ديسمبر"/>
+<l:template name="Monday" text="الإثنين"/>
+<l:template name="Tuesday" text="الثلاثاء"/>
+<l:template name="Wednesday" text="الأربعاء"/>
+<l:template name="Thursday" text="الخميس"/>
+<l:template name="Friday" text="الجمعة"/>
+<l:template name="Saturday" text="السبت"/>
+<l:template name="Sunday" text="الأحد"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="يناير"/>
+<l:template name="Feb" text="فبراير"/>
+<l:template name="Mar" text="مارس"/>
+<l:template name="Apr" text="أبريل"/>
+<l:template name="May" text="مايو"/>
+<l:template name="Jun" text="يونيو"/>
+<l:template name="Jul" text="يوليو"/>
+<l:template name="Aug" text="أغسطس"/>
+<l:template name="Sep" text="سبتمبر"/>
+<l:template name="Oct" text="أكتوبر"/>
+<l:template name="Nov" text="نوفمبر"/>
+<l:template name="Dec" text="ديسمبر"/>
+<l:template name="Mon" text="الإثنين"/>
+<l:template name="Tue" text="الثلاثاء"/>
+<l:template name="Wed" text="الأربعاء"/>
+<l:template name="Thu" text="الخميس"/>
+<l:template name="Fri" text="الجمعة"/>
+<l:template name="Sat" text="السبت"/>
+<l:template name="Sun" text="الأحد"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)" lang="en"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/autoidx-kimber.xsl b/docs/xsl-generic/common/autoidx-kimber.xsl
new file mode 100644
index 00000000..151d3af2
--- /dev/null
+++ b/docs/xsl-generic/common/autoidx-kimber.xsl
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY primary 'normalize-space(concat(primary/@sortas, primary[not(@sortas)]))'>
+<!-- Documents using the kimber index method must have a lang attribute -->
+<!-- Only one of these should be present in the entity -->
+
+<!ENTITY lang 'concat(/*/@lang, /*/@xml:lang)'>
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"
+ xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService"
+ exclude-result-prefixes="k">
+
+<!-- ********************************************************************
+ $Id: autoidx-kimber.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="kimber.imported">
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:choose>
+ <xsl:when test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+
+<!-- The following key used in the kimber indexing method. -->
+<xsl:key name="k-group"
+ match="indexterm"
+ use="k:getIndexGroupKey(&lang;, &primary;)"/>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/autoidx-kosek.xsl b/docs/xsl-generic/common/autoidx-kosek.xsl
new file mode 100644
index 00000000..386e4528
--- /dev/null
+++ b/docs/xsl-generic/common/autoidx-kosek.xsl
@@ -0,0 +1,150 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY primary 'normalize-space(concat(primary/@sortas, primary[not(@sortas)]))'>
+
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0"
+ xmlns:func="http://exslt.org/functions"
+ xmlns:exslt="http://exslt.org/common"
+ xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ extension-element-prefixes="func exslt"
+ exclude-result-prefixes="func exslt i l"
+ xmlns:i="urn:cz-kosek:functions:index">
+
+<!-- ********************************************************************
+ $Id: autoidx-kosek.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="kosek.imported">
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<!-- Returns index group code for given term -->
+<func:function name="i:group-index">
+ <xsl:param name="term"/>
+
+ <xsl:variable name="letters-rtf">
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+
+ <xsl:variable name="local.l10n.letters"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
+
+ <xsl:variable name="l10n.letters"
+ select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($local.l10n.letters) &gt; 0">
+ <xsl:copy-of select="$local.l10n.letters"/>
+ </xsl:when>
+ <xsl:when test="count($l10n.letters) &gt; 0">
+ <xsl:copy-of select="$l10n.letters"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of index grouping letters exists</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$lang = 'en'">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>; using "en".</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:message>
+
+ <xsl:copy-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:letters)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="letters" select="exslt:node-set($letters-rtf)/*"/>
+
+ <xsl:variable name="long-letter-index" select="$letters/l:l[. = substring($term,1,2)]/@i"/>
+ <xsl:variable name="short-letter-index" select="$letters/l:l[. = substring($term,1,1)]/@i"/>
+ <xsl:variable name="letter-index">
+ <xsl:choose>
+ <xsl:when test="$long-letter-index">
+ <xsl:value-of select="$long-letter-index"/>
+ </xsl:when>
+ <xsl:when test="$short-letter-index">
+ <xsl:value-of select="$short-letter-index"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <func:result select="number($letter-index)"/>
+</func:function>
+
+<!-- Return index group letter for given group code -->
+<func:function name="i:group-letter">
+ <xsl:param name="index"/>
+
+ <xsl:variable name="letters-rtf">
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+
+ <xsl:variable name="local.l10n.letters"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
+
+ <xsl:variable name="l10n.letters"
+ select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($local.l10n.letters) &gt; 0">
+ <xsl:copy-of select="$local.l10n.letters"/>
+ </xsl:when>
+ <xsl:when test="count($l10n.letters) &gt; 0">
+ <xsl:copy-of select="$l10n.letters"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of index grouping letters exists</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$lang = 'en'">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>; using "en".</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:message>
+
+ <xsl:copy-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:letters)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="letters" select="exslt:node-set($letters-rtf)/*"/>
+
+ <func:result select="$letters/l:l[@i=$index][1]"/>
+</func:function>
+
+<xsl:key name="group-code"
+ match="indexterm"
+ use="i:group-index(&primary;)"/>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/az.xml b/docs/xsl-generic/common/az.xml
new file mode 100644
index 00000000..b1b14c59
--- /dev/null
+++ b/docs/xsl-generic/common/az.xml
@@ -0,0 +1,666 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="az" english-language-name="Azerbaijani">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/az.xml -->
+<!-- * -->
+<!-- * E-mail the edited az.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="İcmal"/>
+<l:gentext key="abstract" text="İcmal"/>
+<l:gentext key="Answer" text="Cavab:"/>
+<l:gentext key="answer" text="Cavab:"/>
+<l:gentext key="Appendix" text="Əlavə"/>
+<l:gentext key="appendix" text="Əlavə"/>
+<l:gentext key="Article" text="Məqalə"/>
+<l:gentext key="article" text="Məqalə"/>
+<l:gentext key="Author" text="Müəllif"/>
+<l:gentext key="Bibliography" text="Qaynaqça"/>
+<l:gentext key="bibliography" text="Qaynaqça"/>
+<l:gentext key="Book" text="Kitab"/>
+<l:gentext key="book" text="Kitab"/>
+<l:gentext key="CAUTION" text="DİQQƏT"/>
+<l:gentext key="Caution" text="Diqqət"/>
+<l:gentext key="caution" text="Diqqət"/>
+<l:gentext key="Chapter" text="Bölüm"/>
+<l:gentext key="chapter" text="Bölüm"/>
+<l:gentext key="Colophon" text="Kitab Haqqında"/>
+<l:gentext key="colophon" text="Kitab Haqqında"/>
+<l:gentext key="Copyright" text="Müəllif Hüququ"/>
+<l:gentext key="copyright" text="Müəllif Hüququ"/>
+<l:gentext key="Dedication" text="Həsr"/>
+<l:gentext key="dedication" text="Həsr"/>
+<l:gentext key="Edition" text="Buraxılış"/>
+<l:gentext key="edition" text="Buraxılış"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Tənlik"/>
+<l:gentext key="equation" text="Tənlik"/>
+<l:gentext key="Example" text="Nümunə"/>
+<l:gentext key="example" text="Nümunə"/>
+<l:gentext key="Figure" text="Fiqur"/>
+<l:gentext key="figure" text="Fiqur"/>
+<l:gentext key="Glossary" text="Lüğət"/>
+<l:gentext key="glossary" text="Lüğət"/>
+<l:gentext key="GlossSee" text="Bax"/>
+<l:gentext key="glosssee" text="Bax"/>
+<l:gentext key="GlossSeeAlso" text="Eləcə Də Bax"/>
+<l:gentext key="glossseealso" text="Eləcə Də Bax"/>
+<l:gentext key="IMPORTANT" text="VACİB"/>
+<l:gentext key="important" text="Vacib"/>
+<l:gentext key="Important" text="Vacib"/>
+<l:gentext key="Index" text="İndeks"/>
+<l:gentext key="index" text="İndeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Qanuni Qeyd"/>
+<l:gentext key="legalnotice" text="Qanuni Qeyd"/>
+<l:gentext key="MsgAud" text="Hədəf Oxuyucu"/>
+<l:gentext key="msgaud" text="Hədəf Oxuyucu"/>
+<l:gentext key="MsgLevel" text="Səviyyə"/>
+<l:gentext key="msglevel" text="Səviyyə"/>
+<l:gentext key="MsgOrig" text="Mənbə"/>
+<l:gentext key="msgorig" text="Mənbə"/>
+<l:gentext key="NOTE" text="QEYD"/>
+<l:gentext key="Note" text="Qeyd"/>
+<l:gentext key="note" text="Qeyd"/>
+<l:gentext key="Part" text="Hissə"/>
+<l:gentext key="part" text="Hissə"/>
+<l:gentext key="Preface" text="Önsöz"/>
+<l:gentext key="preface" text="Önsöz"/>
+<l:gentext key="Procedure" text="Üsul"/>
+<l:gentext key="procedure" text="Üsul"/>
+<l:gentext key="ProductionSet" text="Produksiya"/>
+<l:gentext key="PubDate" text="Yayimlama Tarixi"/>
+<l:gentext key="pubdate" text="Yayimlama Tarixi"/>
+<l:gentext key="Published" text="Yayimlama"/>
+<l:gentext key="published" text="Yayimlama"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="S və C"/>
+<l:gentext key="qandadiv" text="S və C"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Sual:"/>
+<l:gentext key="question" text="Sual:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Xatırlatma"/>
+<l:gentext key="reference" text="Xatırlatma"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Ad"/>
+<l:gentext key="refname" text="Ad"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="İcmal"/>
+<l:gentext key="refsynopsisdiv" text="İcmal"/>
+<l:gentext key="RevHistory" text="Nəzərdən Keçirmə Tarixçəsi"/>
+<l:gentext key="revhistory" text="Nəzərdən Keçirmə Tarixçəsi"/>
+<l:gentext key="revision" text="Nəzərdən Keçirmə"/>
+<l:gentext key="Revision" text="Nəzərdən Keçirmə"/>
+<l:gentext key="sect1" text="Qisim"/>
+<l:gentext key="sect2" text="Qisim"/>
+<l:gentext key="sect3" text="Qisim"/>
+<l:gentext key="sect4" text="Qisim"/>
+<l:gentext key="sect5" text="Qisim"/>
+<l:gentext key="section" text="Qisim"/>
+<l:gentext key="Section" text="Qisim"/>
+<l:gentext key="see" text="bax"/>
+<l:gentext key="See" text="Bax"/>
+<l:gentext key="seealso" text="eləcə də bax"/>
+<l:gentext key="Seealso" text="Eləcə Də Bax"/>
+<l:gentext key="SeeAlso" text="Eləcə Də Bax"/>
+<l:gentext key="set" text="Dəstə"/>
+<l:gentext key="Set" text="Dəstə"/>
+<l:gentext key="setindex" text="İndeksi Seç"/>
+<l:gentext key="SetIndex" text="İndeksi Seç"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="Kənar Çubuğu"/>
+<l:gentext key="step" text="addım"/>
+<l:gentext key="Step" text="Addım"/>
+<l:gentext key="table" text="cədvəl"/>
+<l:gentext key="Table" text="Cədvəl"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="məsləhət"/>
+<l:gentext key="TIP" text="MƏSLƏHƏT"/>
+<l:gentext key="Tip" text="Məsləhət"/>
+<l:gentext key="Warning" text="Xəbərdarlıq"/>
+<l:gentext key="warning" text="Xəbərdarlıq"/>
+<l:gentext key="WARNING" text="XƏBƏRDARLIQ"/>
+<l:gentext key="and" text="və"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Düzəldildi"/>
+<l:gentext key="edited" text="Düzəldildi"/>
+<l:gentext key="Editedby" text="Düzəliş edən"/>
+<l:gentext key="editedby" text="Düzəliş edən"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="mövcud olmayan element"/>
+<l:gentext key="notes" text="Qeydlər"/>
+<l:gentext key="Notes" text="Qeydlər"/>
+<l:gentext key="Pgs" text="Shflr."/>
+<l:gentext key="pgs" text="Shflr."/>
+<l:gentext key="Revisedby" text="Gözdən keçirən: "/>
+<l:gentext key="revisedby" text="Gözdən keçirən: "/>
+<l:gentext key="TableNotes" text="Qeydlər"/>
+<l:gentext key="tablenotes" text="Qeydlər"/>
+<l:gentext key="TableofContents" text="Məzmun"/>
+<l:gentext key="tableofcontents" text="Məzmun"/>
+<l:gentext key="unexpectedelementname" text="Gözlənməyən element adı"/>
+<l:gentext key="unsupported" text="dəstəklənmir"/>
+<l:gentext key="xrefto" text=""/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Tənliklər"/>
+<l:gentext key="ListofEquations" text="Tənliklər"/>
+<l:gentext key="ListofExamples" text="Nümunələr"/>
+<l:gentext key="listofexamples" text="Nümunələr"/>
+<l:gentext key="ListofFigures" text="Fiqurlar"/>
+<l:gentext key="listoffigures" text="Fiqurlar"/>
+<l:gentext key="ListofProcedures" text="Üsullar"/>
+<l:gentext key="listofprocedures" text="Üsullar"/>
+<l:gentext key="listoftables" text="Cədvəllər"/>
+<l:gentext key="ListofTables" text="Cədvəllər"/>
+<l:gentext key="ListofUnknown" text="Naməlumlar"/>
+<l:gentext key="listofunknown" text="List of Unknown" lang="en"/>
+<l:gentext key="nav-home" text="Ev"/>
+<l:gentext key="nav-next" text="Sonrakı"/>
+<l:gentext key="nav-next-sibling" text="İrəli"/>
+<l:gentext key="nav-prev" text="Əvvəlki"/>
+<l:gentext key="nav-prev-sibling" text="Geri"/>
+<l:gentext key="nav-up" text="Yuxarı"/>
+<l:gentext key="nav-toc" text="Məzmun"/>
+<l:gentext key="Draft" text="Şablon"/>
+<l:gentext key="above" text="Üstündə"/>
+<l:gentext key="below" text="Altında"/>
+<l:gentext key="sectioncalled" text=""/>
+<l:gentext key="index symbols" text="Simvollar"/>
+<l:gentext key="lowercase.alpha" text="abcçdeəfgğhxıijkqlmnoöprsştuüvyz"/>
+<l:gentext key="uppercase.alpha" text="ABCÇDEƏFGĞHXIİJKQLMNOÖPRSŞTUÜVYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Əlavə %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Bölüm %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Tənlik %n. %t"/>
+<l:template name="example" text="Nümunə %n. %t"/>
+<l:template name="figure" text="Fiqur %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Hissə %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Üsul %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produksiya %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Cədvəl %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Əlavə %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Bölüm %n. %t"/>
+<l:template name="part" text="Hissə %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="Cavab: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Sual: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Sual: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text=" “%t”"/>
+<l:template name="refsection" text=" “%t”"/>
+<l:template name="refsect1" text=" “%t”"/>
+<l:template name="refsect2" text=" “%t”"/>
+<l:template name="refsect3" text=" “%t”"/>
+<l:template name="sect1" text=" “%t”"/>
+<l:template name="sect2" text=" “%t”"/>
+<l:template name="sect3" text=" “%t”"/>
+<l:template name="sect4" text=" “%t”"/>
+<l:template name="sect5" text=" “%t”"/>
+<l:template name="section" text=" “%t”"/>
+<l:template name="simplesect" text=" “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Cavab: %n"/>
+<l:template name="appendix" text="Əlavə %n"/>
+<l:template name="bridgehead" text="Qisim %n"/>
+<l:template name="chapter" text="Bölüm %n"/>
+<l:template name="equation" text="Tənlik %n"/>
+<l:template name="example" text="Nümunə %n"/>
+<l:template name="figure" text="Fiqur %n"/>
+<l:template name="part" text="Hissə %n"/>
+<l:template name="procedure" text="Üsul %n"/>
+<l:template name="productionset" text="Produksiya %n"/>
+<l:template name="qandadiv" text="S və C %n"/>
+<l:template name="qandaentry" text="Sual: %n"/>
+<l:template name="question" text="Sual: %n"/>
+<l:template name="sect1" text="Qisim %n"/>
+<l:template name="sect2" text="Qisim %n"/>
+<l:template name="sect3" text="Qisim %n"/>
+<l:template name="sect4" text="Qisim %n"/>
+<l:template name="sect5" text="Qisim %n"/>
+<l:template name="section" text="Qisim %n"/>
+<l:template name="table" text="Cədvəl %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Əlavə %n, %t"/>
+<l:template name="bridgehead" text="Qisim %n, “%t”"/>
+<l:template name="chapter" text="Bölüm %n, %t"/>
+<l:template name="equation" text="Tənlik %n, “%t”"/>
+<l:template name="example" text="Nümunə %n, “%t”"/>
+<l:template name="figure" text="Fiqur %n, “%t”"/>
+<l:template name="part" text="Hissə %n, “%t”"/>
+<l:template name="procedure" text="Üsul %n, “%t”"/>
+<l:template name="productionset" text="Produksiya %n, “%t”"/>
+<l:template name="qandadiv" text="S və C %n, “%t”"/>
+<l:template name="refsect1" text=" “%t”"/>
+<l:template name="refsect2" text=" “%t”"/>
+<l:template name="refsect3" text=" “%t”"/>
+<l:template name="refsection" text=" “%t”"/>
+<l:template name="sect1" text="Qisim %n, “%t”"/>
+<l:template name="sect2" text="Qisim %n, “%t”"/>
+<l:template name="sect3" text="Qisim %n, “%t”"/>
+<l:template name="sect4" text="Qisim %n, “%t”"/>
+<l:template name="sect5" text="Qisim %n, “%t”"/>
+<l:template name="section" text="Qisim %n, “%t”"/>
+<l:template name="simplesect" text=" “%t”"/>
+<l:template name="table" text="Cədvəl %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" və "/>
+<l:template name="seplast" text=", və "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Bax %t"/>
+<l:template name="seealso" text="Eləcə Də Bax %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Hədəf Oxuyucu: "/>
+<l:template name="MsgLevel" text="Səviyyə: "/>
+<l:template name="MsgOrig" text="Mənbə: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Janvar"/>
+<l:template name="February" text="Fevral"/>
+<l:template name="March" text="Mart"/>
+<l:template name="April" text="Aprel"/>
+<l:template name="May" text="May"/>
+<l:template name="June" text="İyun"/>
+<l:template name="July" text="İyul"/>
+<l:template name="August" text="Avqust"/>
+<l:template name="September" text="Sentyabr"/>
+<l:template name="October" text="Oktyabr"/>
+<l:template name="November" text="Noyabr"/>
+<l:template name="December" text="Dekabr"/>
+<l:template name="Monday" text="Bazar Ertəsi"/>
+<l:template name="Tuesday" text="Çərşənbə Axşamı "/>
+<l:template name="Wednesday" text="Çərşənbə"/>
+<l:template name="Thursday" text="Cümə Axşamı"/>
+<l:template name="Friday" text="Cümə"/>
+<l:template name="Saturday" text="Şənbə"/>
+<l:template name="Sunday" text="Bazar"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Yan"/>
+<l:template name="Feb" text="Fev"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="İyn"/>
+<l:template name="Jul" text="İyl"/>
+<l:template name="Aug" text="Avq"/>
+<l:template name="Sep" text="Sen"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Noy"/>
+<l:template name="Dec" text="Dek"/>
+<l:template name="Mon" text="Ber"/>
+<l:template name="Tue" text="Çax"/>
+<l:template name="Wed" text="Çər"/>
+<l:template name="Thu" text="Cax"/>
+<l:template name="Fri" text="Cüm"/>
+<l:template name="Sat" text="Şnb"/>
+<l:template name="Sun" text="Baz"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x042c Azerbaijani"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">İşarələr</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">Ç</l:l>
+<l:l i="5">ç</l:l>
+<l:l i="5">D</l:l>
+<l:l i="5">d</l:l>
+<l:l i="6">E</l:l>
+<l:l i="6">e</l:l>
+<l:l i="7">e</l:l>
+<l:l i="7">e</l:l>
+<l:l i="8">Ə</l:l>
+<l:l i="8">ə</l:l>
+<l:l i="9">G</l:l>
+<l:l i="9">g</l:l>
+<l:l i="10">Ğ</l:l>
+<l:l i="10">ğ</l:l>
+<l:l i="11">H</l:l>
+<l:l i="11">h</l:l>
+<l:l i="12">X</l:l>
+<l:l i="12">x</l:l>
+<l:l i="13">I</l:l>
+<l:l i="13">ı</l:l>
+<l:l i="14">İ</l:l>
+<l:l i="14">i</l:l>
+<l:l i="15">J</l:l>
+<l:l i="15">j</l:l>
+<l:l i="16">K</l:l>
+<l:l i="16">k</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">L</l:l>
+<l:l i="18">l</l:l>
+<l:l i="19">M</l:l>
+<l:l i="19">m</l:l>
+<l:l i="20">N</l:l>
+<l:l i="20">n</l:l>
+<l:l i="21">O</l:l>
+<l:l i="21">o</l:l>
+<l:l i="22">Ö</l:l>
+<l:l i="22">ö</l:l>
+<l:l i="23">P</l:l>
+<l:l i="23">p</l:l>
+<l:l i="24">R</l:l>
+<l:l i="24">r</l:l>
+<l:l i="25">S</l:l>
+<l:l i="25">s</l:l>
+<l:l i="26">Ş</l:l>
+<l:l i="26">ş</l:l>
+<l:l i="27">T</l:l>
+<l:l i="27">t</l:l>
+<l:l i="28">U</l:l>
+<l:l i="28">u</l:l>
+<l:l i="29">Ü</l:l>
+<l:l i="29">ü</l:l>
+<l:l i="30">V</l:l>
+<l:l i="30">v</l:l>
+<l:l i="31">Y</l:l>
+<l:l i="31">y</l:l>
+<l:l i="32">Z</l:l>
+<l:l i="32">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/bg.xml b/docs/xsl-generic/common/bg.xml
new file mode 100644
index 00000000..1e6e7a13
--- /dev/null
+++ b/docs/xsl-generic/common/bg.xml
@@ -0,0 +1,718 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="bg" english-language-name="Bulgarian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/bg.xml -->
+<!-- * -->
+<!-- * E-mail the edited bg.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Анотация"/>
+<l:gentext key="abstract" text="Анотация"/>
+<l:gentext key="Answer" text="О"/>
+<l:gentext key="answer" text="О"/>
+<l:gentext key="Appendix" text="Приложение"/>
+<l:gentext key="appendix" text="Приложение"/>
+<l:gentext key="Article" text="Статия"/>
+<l:gentext key="article" text="Статия"/>
+<l:gentext key="Author" text="Автор"/>
+<l:gentext key="Bibliography" text="Литература"/>
+<l:gentext key="bibliography" text="Литература"/>
+<l:gentext key="Book" text="Книга"/>
+<l:gentext key="book" text="Книга"/>
+<l:gentext key="CAUTION" text="Внимание"/>
+<l:gentext key="Caution" text="Внимание"/>
+<l:gentext key="caution" text="Внимание"/>
+<l:gentext key="Chapter" text="Глава"/>
+<l:gentext key="chapter" text="Глава"/>
+<l:gentext key="Colophon" text="Библиографско каре"/>
+<l:gentext key="colophon" text="Библиографско каре"/>
+<l:gentext key="Copyright" text="Авторски права"/>
+<l:gentext key="copyright" text="Авторски права"/>
+<l:gentext key="Dedication" text="Посвещение"/>
+<l:gentext key="dedication" text="Посвещение"/>
+<l:gentext key="Edition" text="Издание"/>
+<l:gentext key="edition" text="Издание"/>
+<l:gentext key="Editor" text="Редактор"/>
+<l:gentext key="Equation" text="Формула"/>
+<l:gentext key="equation" text="Формула"/>
+<l:gentext key="Example" text="Пример"/>
+<l:gentext key="example" text="Пример"/>
+<l:gentext key="Figure" text="Фигура"/>
+<l:gentext key="figure" text="Фигура"/>
+<l:gentext key="Glossary" text="Терминологичен речник"/>
+<l:gentext key="glossary" text="Терминологичен речник"/>
+<l:gentext key="GlossSee" text="вж."/>
+<l:gentext key="glosssee" text="вж."/>
+<l:gentext key="GlossSeeAlso" text="вж."/>
+<l:gentext key="glossseealso" text="вж."/>
+<l:gentext key="IMPORTANT" text="Важно"/>
+<l:gentext key="important" text="Важно"/>
+<l:gentext key="Important" text="Важно"/>
+<l:gentext key="Index" text="Азбучен указател"/>
+<l:gentext key="index" text="Азбучен указател"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Авторски права"/>
+<l:gentext key="legalnotice" text="Авторски права"/>
+<l:gentext key="MsgAud" text="Насоченост"/>
+<l:gentext key="msgaud" text="Насоченост"/>
+<l:gentext key="MsgLevel" text="Ниво"/>
+<l:gentext key="msglevel" text="Ниво"/>
+<l:gentext key="MsgOrig" text="Източник"/>
+<l:gentext key="msgorig" text="Източник"/>
+<l:gentext key="NOTE" text="Забележка"/>
+<l:gentext key="Note" text="Забележка"/>
+<l:gentext key="note" text="Забележка"/>
+<l:gentext key="Part" text="Част"/>
+<l:gentext key="part" text="Част"/>
+<l:gentext key="Preface" text="Предговор"/>
+<l:gentext key="preface" text="Предговор"/>
+<l:gentext key="Procedure" text="Процедура"/>
+<l:gentext key="procedure" text="Процедура"/>
+<l:gentext key="ProductionSet" text="Множество от декартови произведения по Бакхус-Наур"/>
+<l:gentext key="PubDate" text="Дата на издаване"/>
+<l:gentext key="pubdate" text="Дата на издаване"/>
+<l:gentext key="Published" text="Издаден"/>
+<l:gentext key="published" text="Издаден"/>
+<l:gentext key="Publisher" text="Издател"/>
+<l:gentext key="Qandadiv" text="Въпроси и отговори"/>
+<l:gentext key="qandadiv" text="Въпроси и отговори"/>
+<l:gentext key="QandASet" text="Често задавани въпроси"/>
+<l:gentext key="Question" text="В"/>
+<l:gentext key="question" text="В"/>
+<l:gentext key="RefEntry" text="вж."/>
+<l:gentext key="refentry" text="вж."/>
+<l:gentext key="Reference" text="Справочник"/>
+<l:gentext key="reference" text="Справочник"/>
+<l:gentext key="References" text="Препратки"/>
+<l:gentext key="RefName" text="Название"/>
+<l:gentext key="refname" text="Название"/>
+<l:gentext key="RefSection" text="вж."/>
+<l:gentext key="refsection" text="вж."/>
+<l:gentext key="RefSynopsisDiv" text="Синтаксис"/>
+<l:gentext key="refsynopsisdiv" text="Синтаксис"/>
+<l:gentext key="RevHistory" text="Промени"/>
+<l:gentext key="revhistory" text="Промени"/>
+<l:gentext key="revision" text="Издание"/>
+<l:gentext key="Revision" text="Издание"/>
+<l:gentext key="sect1" text="Раздел"/>
+<l:gentext key="sect2" text="Раздел"/>
+<l:gentext key="sect3" text="Раздел"/>
+<l:gentext key="sect4" text="Раздел"/>
+<l:gentext key="sect5" text="Раздел"/>
+<l:gentext key="section" text="Раздел"/>
+<l:gentext key="Section" text="Раздел"/>
+<l:gentext key="see" text="вж."/>
+<l:gentext key="See" text="вж."/>
+<l:gentext key="seealso" text="вж."/>
+<l:gentext key="Seealso" text="вж."/>
+<l:gentext key="SeeAlso" text="вж."/>
+<l:gentext key="set" text="Указател"/>
+<l:gentext key="Set" text="Указател"/>
+<l:gentext key="setindex" text="Указател"/>
+<l:gentext key="SetIndex" text="Указател"/>
+<l:gentext key="Sidebar" text="Разделител"/>
+<l:gentext key="sidebar" text="Разделител"/>
+<l:gentext key="step" text="Стъпка"/>
+<l:gentext key="Step" text="Стъпка"/>
+<l:gentext key="table" text="Таблица"/>
+<l:gentext key="Table" text="Таблица"/>
+<l:gentext key="task" text="Задача"/>
+<l:gentext key="Task" text="Задача"/>
+<l:gentext key="tip" text="Подсказка"/>
+<l:gentext key="TIP" text="Подсказка"/>
+<l:gentext key="Tip" text="Подсказка"/>
+<l:gentext key="Warning" text="Внимание"/>
+<l:gentext key="warning" text="Внимание"/>
+<l:gentext key="WARNING" text="Внимание"/>
+<l:gentext key="and" text="и"/>
+<l:gentext key="by" text="от"/>
+<l:gentext key="Edited" text="Редактирано от"/>
+<l:gentext key="edited" text="Редактирано от"/>
+<l:gentext key="Editedby" text="Редактирано от"/>
+<l:gentext key="editedby" text="Редактирано от"/>
+<l:gentext key="in" text="в"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="липсващ елемент"/>
+<l:gentext key="notes" text="Забележки"/>
+<l:gentext key="Notes" text="Забележки"/>
+<l:gentext key="Pgs" text="стр."/>
+<l:gentext key="pgs" text="стр."/>
+<l:gentext key="Revisedby" text="Преработено от"/>
+<l:gentext key="revisedby" text="Преработено от"/>
+<l:gentext key="TableNotes" text="Забележки"/>
+<l:gentext key="tablenotes" text="Забележки"/>
+<l:gentext key="TableofContents" text="Съдържание"/>
+<l:gentext key="tableofcontents" text="Съдържание"/>
+<l:gentext key="unexpectedelementname" text="неочакван елемент"/>
+<l:gentext key="unsupported" text="неподдържан елемент"/>
+<l:gentext key="xrefto" text="вж."/>
+<l:gentext key="Authors" text="Автори"/>
+<l:gentext key="copyeditor" text="Редактор"/>
+<l:gentext key="graphicdesigner" text="Автор на графичното оформление"/>
+<l:gentext key="productioneditor" text="Редактор на изданието"/>
+<l:gentext key="technicaleditor" text="Технически редактор"/>
+<l:gentext key="translator" text="Преводач"/>
+<l:gentext key="listofequations" text="Списък на формулите"/>
+<l:gentext key="ListofEquations" text="Списък на формулите"/>
+<l:gentext key="ListofExamples" text="Списък на примерите"/>
+<l:gentext key="listofexamples" text="Списък на примерите"/>
+<l:gentext key="ListofFigures" text="Списък на фигурите"/>
+<l:gentext key="listoffigures" text="Списък на фигурите"/>
+<l:gentext key="ListofProcedures" text="Списък на процедурите"/>
+<l:gentext key="listofprocedures" text="Списък на процедурите"/>
+<l:gentext key="listoftables" text="Списък на таблиците"/>
+<l:gentext key="ListofTables" text="Списък на таблиците"/>
+<l:gentext key="ListofUnknown" text="Списък с други неща"/>
+<l:gentext key="listofunknown" text="Списък с други неща"/>
+<l:gentext key="nav-home" text="Начало"/>
+<l:gentext key="nav-next" text="Напред"/>
+<l:gentext key="nav-next-sibling" text="Прескачане напред"/>
+<l:gentext key="nav-prev" text="Назад"/>
+<l:gentext key="nav-prev-sibling" text="Прескачане назад"/>
+<l:gentext key="nav-up" text="Ниво нагоре"/>
+<l:gentext key="nav-toc" text="Съдържание"/>
+<l:gentext key="Draft" text="Чернова"/>
+<l:gentext key="above" text="по-горе"/>
+<l:gentext key="below" text="по-долу"/>
+<l:gentext key="sectioncalled" text="разделът със заглавие"/>
+<l:gentext key="index symbols" text="символи"/>
+<l:gentext key="lowercase.alpha" text="абвгдежзийклмнопрстуфхцчшщъыьэюя"/>
+<l:gentext key="uppercase.alpha" text="АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="„"/>
+<l:dingbat key="nestedendquote" text="“"/>
+<l:dingbat key="singlestartquote" text="«"/>
+<l:dingbat key="singleendquote" text="»"/>
+<l:dingbat key="bullet" text="—"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Приложение %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Глава %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Формула %n. %t"/>
+<l:template name="example" text="Пример %n. %t"/>
+<l:template name="figure" text="Фигура %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Част %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Процедура %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Множество от декартови произведения по Бакхус-Наур %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Таблица %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Приложение %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Глава %n. %t"/>
+<l:template name="part" text="Част %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="В. %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="В. %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="разделът със заглавие „%t“"/>
+<l:template name="refsection" text="разделът със заглавие „%t“"/>
+<l:template name="refsect1" text="разделът със заглавие „%t“"/>
+<l:template name="refsect2" text="разделът със заглавие „%t“"/>
+<l:template name="refsect3" text="разделът със заглавие „%t“"/>
+<l:template name="sect1" text="разделът със заглавие „%t“"/>
+<l:template name="sect2" text="разделът със заглавие „%t“"/>
+<l:template name="sect3" text="разделът със заглавие „%t“"/>
+<l:template name="sect4" text="разделът със заглавие „%t“"/>
+<l:template name="sect5" text="разделът със заглавие „%t“"/>
+<l:template name="section" text="разделът със заглавие „%t“"/>
+<l:template name="simplesect" text="разделът със заглавие „%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="О. %n"/>
+<l:template name="appendix" text="Приложение %n"/>
+<l:template name="bridgehead" text="Раздел %n"/>
+<l:template name="chapter" text="Глава %n"/>
+<l:template name="equation" text="Формула %n"/>
+<l:template name="example" text="Пример %n"/>
+<l:template name="figure" text="Фигура %n"/>
+<l:template name="part" text="Част %n"/>
+<l:template name="procedure" text="Процедура %n"/>
+<l:template name="productionset" text="Множество от декартови произведения по Бакхус-Наур %n"/>
+<l:template name="qandadiv" text="Въпроси и отговори %n"/>
+<l:template name="qandaentry" text="В. %n"/>
+<l:template name="question" text="В. %n"/>
+<l:template name="sect1" text="Раздел %n"/>
+<l:template name="sect2" text="Раздел %n"/>
+<l:template name="sect3" text="Раздел %n"/>
+<l:template name="sect4" text="Раздел %n"/>
+<l:template name="sect5" text="Раздел %n"/>
+<l:template name="section" text="Раздел %n"/>
+<l:template name="table" text="Таблица %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Приложение %n, %t"/>
+<l:template name="bridgehead" text="Раздел %n, „%t“"/>
+<l:template name="chapter" text="Глава %n, %t"/>
+<l:template name="equation" text="Формула %n, „%t“"/>
+<l:template name="example" text="Пример %n, „%t“"/>
+<l:template name="figure" text="Фигура %n, „%t“"/>
+<l:template name="part" text="Част %n, „%t“"/>
+<l:template name="procedure" text="Процедура %n, „%t“"/>
+<l:template name="productionset" text="Множество от декартови произведения по Бакхус-Наур %n, „%t“"/>
+<l:template name="qandadiv" text="Въпроси и отговори %n, „%t“"/>
+<l:template name="refsect1" text="разделът със заглавие „%t“"/>
+<l:template name="refsect2" text="разделът със заглавие „%t“"/>
+<l:template name="refsect3" text="разделът със заглавие „%t“"/>
+<l:template name="refsection" text="разделът със заглавие „%t“"/>
+<l:template name="sect1" text="Раздел %n, „%t“"/>
+<l:template name="sect2" text="Раздел %n, „%t“"/>
+<l:template name="sect3" text="Раздел %n, „%t“"/>
+<l:template name="sect4" text="Раздел %n, „%t“"/>
+<l:template name="sect5" text="Раздел %n, „%t“"/>
+<l:template name="section" text="Раздел %n, „%t“"/>
+<l:template name="simplesect" text="разделът със заглавие „%t“"/>
+<l:template name="table" text="Таблица %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" и "/>
+<l:template name="seplast" text=" и "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="вж. %t"/>
+<l:template name="seealso" text="вж. %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Насоченост: "/>
+<l:template name="MsgLevel" text="Ниво: "/>
+<l:template name="MsgOrig" text="Източник: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y г."/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="януари"/>
+<l:template name="February" text="февруари"/>
+<l:template name="March" text="март"/>
+<l:template name="April" text="април"/>
+<l:template name="May" text="май"/>
+<l:template name="June" text="юни"/>
+<l:template name="July" text="юли"/>
+<l:template name="August" text="август"/>
+<l:template name="September" text="септември"/>
+<l:template name="October" text="октомври"/>
+<l:template name="November" text="ноември"/>
+<l:template name="December" text="декември"/>
+<l:template name="Monday" text="понеделник"/>
+<l:template name="Tuesday" text="вторник"/>
+<l:template name="Wednesday" text="сряда"/>
+<l:template name="Thursday" text="четвъртък"/>
+<l:template name="Friday" text="петък"/>
+<l:template name="Saturday" text="събота"/>
+<l:template name="Sunday" text="неделя"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ян."/>
+<l:template name="Feb" text="фев."/>
+<l:template name="Mar" text="март"/>
+<l:template name="Apr" text="апр."/>
+<l:template name="May" text="май"/>
+<l:template name="Jun" text="юни"/>
+<l:template name="Jul" text="юли"/>
+<l:template name="Aug" text="авг."/>
+<l:template name="Sep" text="сеп."/>
+<l:template name="Oct" text="окт."/>
+<l:template name="Nov" text="ноем."/>
+<l:template name="Dec" text="дек."/>
+<l:template name="Mon" text="пон."/>
+<l:template name="Tue" text="вт."/>
+<l:template name="Wed" text="ср."/>
+<l:template name="Thu" text="чет."/>
+<l:template name="Fri" text="пет."/>
+<l:template name="Sat" text="съб."/>
+<l:template name="Sun" text="нед."/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0402 Bulgarian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="—"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Цифри и знаци</l:l>
+<l:l i="10">А</l:l>
+<l:l i="10">а</l:l>
+<l:l i="20">Б</l:l>
+<l:l i="20">б</l:l>
+<l:l i="30">В</l:l>
+<l:l i="30">в</l:l>
+<l:l i="40">Г</l:l>
+<l:l i="40">г</l:l>
+<l:l i="50">Д</l:l>
+<l:l i="50">д</l:l>
+<l:l i="60">Е</l:l>
+<l:l i="60">е</l:l>
+<l:l i="70">Ж</l:l>
+<l:l i="70">ж</l:l>
+<l:l i="80">З</l:l>
+<l:l i="80">з</l:l>
+<l:l i="90">И</l:l>
+<l:l i="90">и</l:l>
+<l:l i="100">Й</l:l>
+<l:l i="100">й</l:l>
+<l:l i="110">К</l:l>
+<l:l i="110">к</l:l>
+<l:l i="120">Л</l:l>
+<l:l i="120">л</l:l>
+<l:l i="130">М</l:l>
+<l:l i="130">м</l:l>
+<l:l i="140">Н</l:l>
+<l:l i="140">н</l:l>
+<l:l i="150">О</l:l>
+<l:l i="150">о</l:l>
+<l:l i="160">П</l:l>
+<l:l i="160">п</l:l>
+<l:l i="170">Р</l:l>
+<l:l i="170">р</l:l>
+<l:l i="180">С</l:l>
+<l:l i="180">с</l:l>
+<l:l i="190">Т</l:l>
+<l:l i="190">т</l:l>
+<l:l i="200">У</l:l>
+<l:l i="200">у</l:l>
+<l:l i="210">Ф</l:l>
+<l:l i="210">ф</l:l>
+<l:l i="220">Х</l:l>
+<l:l i="220">х</l:l>
+<l:l i="230">Ц</l:l>
+<l:l i="230">ц</l:l>
+<l:l i="240">Ч</l:l>
+<l:l i="240">ч</l:l>
+<l:l i="250">Ш</l:l>
+<l:l i="250">ш</l:l>
+<l:l i="260">Щ</l:l>
+<l:l i="260">щ</l:l>
+<l:l i="270">Ъ</l:l>
+<l:l i="270">ъ</l:l>
+<l:l i="280">Ь</l:l>
+<l:l i="280">ь</l:l>
+<l:l i="290">Ю</l:l>
+<l:l i="290">ю</l:l>
+<l:l i="300">Я</l:l>
+<l:l i="300">я</l:l>
+<l:l i="310">Э</l:l>
+<l:l i="310">э</l:l>
+<l:l i="320">Ы</l:l>
+<l:l i="320">ы</l:l>
+<l:l i="410">A</l:l>
+<l:l i="410">a</l:l>
+<l:l i="420">B</l:l>
+<l:l i="420">b</l:l>
+<l:l i="430">C</l:l>
+<l:l i="430">c</l:l>
+<l:l i="440">D</l:l>
+<l:l i="440">d</l:l>
+<l:l i="450">E</l:l>
+<l:l i="450">e</l:l>
+<l:l i="460">F</l:l>
+<l:l i="460">f</l:l>
+<l:l i="470">G</l:l>
+<l:l i="470">g</l:l>
+<l:l i="480">H</l:l>
+<l:l i="480">h</l:l>
+<l:l i="490">I</l:l>
+<l:l i="490">i</l:l>
+<l:l i="500">J</l:l>
+<l:l i="500">j</l:l>
+<l:l i="510">K</l:l>
+<l:l i="510">k</l:l>
+<l:l i="520">L</l:l>
+<l:l i="520">l</l:l>
+<l:l i="530">M</l:l>
+<l:l i="530">m</l:l>
+<l:l i="540">N</l:l>
+<l:l i="540">n</l:l>
+<l:l i="550">O</l:l>
+<l:l i="550">o</l:l>
+<l:l i="560">P</l:l>
+<l:l i="560">p</l:l>
+<l:l i="570">Q</l:l>
+<l:l i="570">q</l:l>
+<l:l i="580">R</l:l>
+<l:l i="580">r</l:l>
+<l:l i="590">S</l:l>
+<l:l i="590">s</l:l>
+<l:l i="600">T</l:l>
+<l:l i="600">t</l:l>
+<l:l i="610">U</l:l>
+<l:l i="610">u</l:l>
+<l:l i="620">V</l:l>
+<l:l i="620">v</l:l>
+<l:l i="630">W</l:l>
+<l:l i="630">w</l:l>
+<l:l i="640">X</l:l>
+<l:l i="640">x</l:l>
+<l:l i="650">Y</l:l>
+<l:l i="650">y</l:l>
+<l:l i="660">Z</l:l>
+<l:l i="660">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/bn.xml b/docs/xsl-generic/common/bn.xml
new file mode 100644
index 00000000..f31e01c4
--- /dev/null
+++ b/docs/xsl-generic/common/bn.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="bn" english-language-name="Bangla">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/bn.xml -->
+<!-- * -->
+<!-- * E-mail the edited bn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="সারসংক্ষেপ"/>
+<l:gentext key="abstract" text="সারসংক্ষেপ"/>
+<l:gentext key="Answer" text="উত্তর:"/>
+<l:gentext key="answer" text="উত্তর:"/>
+<l:gentext key="Appendix" text="পরিশিষ্ট"/>
+<l:gentext key="appendix" text="পরিশিষ্ট"/>
+<l:gentext key="Article" text="প্রবন্ধ"/>
+<l:gentext key="article" text="প্রবন্ধ"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="গ্রন্থ তালিকা"/>
+<l:gentext key="bibliography" text="গ্রন্থ তালিকা"/>
+<l:gentext key="Book" text="বই"/>
+<l:gentext key="book" text="বই"/>
+<l:gentext key="CAUTION" text="সতর্কতা"/>
+<l:gentext key="Caution" text="সতর্কতা"/>
+<l:gentext key="caution" text="সতর্কতা"/>
+<l:gentext key="Chapter" text="অধ্যায়"/>
+<l:gentext key="chapter" text="অধ্যায়"/>
+<l:gentext key="Colophon" text="প্রকাশনা তথ্য পৃষ্ঠা"/>
+<l:gentext key="colophon" text="প্রকাশনা তথ্য পৃষ্ঠা"/>
+<l:gentext key="Copyright" text="স্বত্ব"/>
+<l:gentext key="copyright" text="স্বত্ব"/>
+<l:gentext key="Dedication" text="উত্‍সর্গ"/>
+<l:gentext key="dedication" text="উত্‍সর্গ"/>
+<l:gentext key="Edition" text="সংস্করণ"/>
+<l:gentext key="edition" text="সংস্করণ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="সমীকরণ"/>
+<l:gentext key="equation" text="সমীকরণ"/>
+<l:gentext key="Example" text="উদাহরণ"/>
+<l:gentext key="example" text="উদাহরণ"/>
+<l:gentext key="Figure" text="চিত্র"/>
+<l:gentext key="figure" text="চিত্র"/>
+<l:gentext key="Glossary" text="নির্ঘন্ট"/>
+<l:gentext key="glossary" text="নির্ঘন্ট"/>
+<l:gentext key="GlossSee" text="দেখুন"/>
+<l:gentext key="glosssee" text="দেখুন"/>
+<l:gentext key="GlossSeeAlso" text="আরো দেখুন"/>
+<l:gentext key="glossseealso" text="আরো দেখুন"/>
+<l:gentext key="IMPORTANT" text="গুরুত্বপূর্ণ"/>
+<l:gentext key="important" text="গুরুত্বপূর্ণ"/>
+<l:gentext key="Important" text="গুরুত্বপূর্ণ"/>
+<l:gentext key="Index" text="সূচি"/>
+<l:gentext key="index" text="সূচি"/>
+<l:gentext key="ISBN" text="আইএসবিএন (ISBN)"/>
+<l:gentext key="isbn" text="আইএসবিএন (ISBN)"/>
+<l:gentext key="LegalNotice" text="আইনী বিজ্ঞপ্তি"/>
+<l:gentext key="legalnotice" text="আইনী বিজ্ঞপ্তি"/>
+<l:gentext key="MsgAud" text="শ্রোতা"/>
+<l:gentext key="msgaud" text="শ্রোতা"/>
+<l:gentext key="MsgLevel" text="স্তর"/>
+<l:gentext key="msglevel" text="স্তর"/>
+<l:gentext key="MsgOrig" text="উত্‍স"/>
+<l:gentext key="msgorig" text="উত্‍স"/>
+<l:gentext key="NOTE" text="লক্ষণীয়"/>
+<l:gentext key="Note" text="লক্ষণীয়"/>
+<l:gentext key="note" text="লক্ষণীয়"/>
+<l:gentext key="Part" text="খন্ড"/>
+<l:gentext key="part" text="খন্ড"/>
+<l:gentext key="Preface" text="মুখবন্ধ"/>
+<l:gentext key="preface" text="মুখবন্ধ"/>
+<l:gentext key="Procedure" text="পদ্ধতি"/>
+<l:gentext key="procedure" text="পদ্ধতি"/>
+<l:gentext key="ProductionSet" text="উত্‍পাদন"/>
+<l:gentext key="PubDate" text="প্রকাশনার তারিখ"/>
+<l:gentext key="pubdate" text="প্রকাশনার তারিখ"/>
+<l:gentext key="Published" text="প্রকাশিত"/>
+<l:gentext key="published" text="প্রকাশিত"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="প্রশ্নএবংউত্তর"/>
+<l:gentext key="qandadiv" text="প্রশ্নএবংউত্তর"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="প্রশ্ন:"/>
+<l:gentext key="question" text="প্রশ্ন:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="গ্রন্থসূত্র"/>
+<l:gentext key="reference" text="গ্রন্থসূত্র"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="নাম"/>
+<l:gentext key="refname" text="নাম"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="সারাংশ"/>
+<l:gentext key="refsynopsisdiv" text="সারাংশ"/>
+<l:gentext key="RevHistory" text="পরিবর্ধন ও পরিবর্তন তালিকা"/>
+<l:gentext key="revhistory" text="পরিবর্ধন ও পরিবর্তন তালিকা"/>
+<l:gentext key="revision" text="সংস্করণ"/>
+<l:gentext key="Revision" text="সংস্করণ"/>
+<l:gentext key="sect1" text="অনুচ্ছেদ"/>
+<l:gentext key="sect2" text="অনুচ্ছেদ"/>
+<l:gentext key="sect3" text="অনুচ্ছেদ"/>
+<l:gentext key="sect4" text="অনুচ্ছেদ"/>
+<l:gentext key="sect5" text="অনুচ্ছেদ"/>
+<l:gentext key="section" text="অনুচ্ছেদ"/>
+<l:gentext key="Section" text="অনুচ্ছেদ"/>
+<l:gentext key="see" text="দেখুন"/>
+<l:gentext key="See" text="দেখুন"/>
+<l:gentext key="seealso" text="আরো দেখুন"/>
+<l:gentext key="Seealso" text="আরো দেখুন"/>
+<l:gentext key="SeeAlso" text="আরো দেখুন"/>
+<l:gentext key="set" text="সমষ্টি"/>
+<l:gentext key="Set" text="সমষ্টি"/>
+<l:gentext key="setindex" text="সূচিসমষ্টি"/>
+<l:gentext key="SetIndex" text="সূচিসমষ্টি"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="সাইডবার"/>
+<l:gentext key="step" text="ধাপ"/>
+<l:gentext key="Step" text="ধাপ"/>
+<l:gentext key="table" text="ছক"/>
+<l:gentext key="Table" text="ছক"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="ইঙ্গিত"/>
+<l:gentext key="TIP" text="ইঙ্গিত"/>
+<l:gentext key="Tip" text="ইঙ্গিত"/>
+<l:gentext key="Warning" text="সতর্কবাণী"/>
+<l:gentext key="warning" text="সতর্কবাণী"/>
+<l:gentext key="WARNING" text="সতর্কবাণী"/>
+<l:gentext key="and" text="এবং"/>
+<l:gentext key="by" text="দ্বারা"/>
+<l:gentext key="Edited" text="সম্পাদিত"/>
+<l:gentext key="edited" text="সম্পাদিত"/>
+<l:gentext key="Editedby" text="সম্পাদক"/>
+<l:gentext key="editedby" text="সম্পাদক"/>
+<l:gentext key="in" text="মধ্যে"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="অস্তিত্বহীন উপাদান"/>
+<l:gentext key="notes" text="নোট"/>
+<l:gentext key="Notes" text="নোট"/>
+<l:gentext key="Pgs" text="পৃষ্ঠা."/>
+<l:gentext key="pgs" text="পৃষ্ঠা."/>
+<l:gentext key="Revisedby" text="পরিমার্জনাকারী: "/>
+<l:gentext key="revisedby" text="পরিমার্জনাকারী: "/>
+<l:gentext key="TableNotes" text="নোট"/>
+<l:gentext key="tablenotes" text="নোট"/>
+<l:gentext key="TableofContents" text="সূচিপত্র"/>
+<l:gentext key="tableofcontents" text="সূচিপত্র"/>
+<l:gentext key="unexpectedelementname" text="অপ্রত্যাশিত উপাদানের নাম"/>
+<l:gentext key="unsupported" text="অসমর্থিত"/>
+<l:gentext key="xrefto" text="নির্দেশ করে"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="সমীকরণ তালিকা"/>
+<l:gentext key="ListofEquations" text="সমীকরণ তালিকা"/>
+<l:gentext key="ListofExamples" text="উদাহরণ তালিকা"/>
+<l:gentext key="listofexamples" text="উদাহরণ তালিকা"/>
+<l:gentext key="ListofFigures" text="চিত্রতালিকা"/>
+<l:gentext key="listoffigures" text="চিত্রতালিকা"/>
+<l:gentext key="ListofProcedures" text="পদ্ধতির তালিকা"/>
+<l:gentext key="listofprocedures" text="পদ্ধতির তালিকা"/>
+<l:gentext key="listoftables" text="ছকের তালিকা"/>
+<l:gentext key="ListofTables" text="ছকের তালিকা"/>
+<l:gentext key="ListofUnknown" text="অজ্ঞাত বস্তুর তালিকা"/>
+<l:gentext key="listofunknown" text="অজ্ঞাত বস্তুর তালিকা"/>
+<l:gentext key="nav-home" text="প্রথম অবস্থান (Home)"/>
+<l:gentext key="nav-next" text="পরবর্তী"/>
+<l:gentext key="nav-next-sibling" text="দ্রুত সম্মুখে"/>
+<l:gentext key="nav-prev" text="পূর্ববর্তী"/>
+<l:gentext key="nav-prev-sibling" text="দ্রুত পশ্চাতে"/>
+<l:gentext key="nav-up" text="উপর"/>
+<l:gentext key="nav-toc" text="সূচিপত্র"/>
+<l:gentext key="Draft" text="খসড়া"/>
+<l:gentext key="above" text="উপর"/>
+<l:gentext key="below" text="নিচ"/>
+<l:gentext key="sectioncalled" text="অনুচ্ছেদ"/>
+<l:gentext key="index symbols" text="প্রতীক"/>
+<l:gentext key="lowercase.alpha" text="অআইঈউঊএঐওঔঋকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহংঃ"/>
+<l:gentext key="uppercase.alpha" text="অআইঈউঊএঐওঔঋকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহংঃ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="পরিশিষ্ট %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="অধ্যায় %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="সমীকরণ %n. %t"/>
+<l:template name="example" text="উদাহরণ %n. %t"/>
+<l:template name="figure" text="চিত্র %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="খন্ড %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="পদ্ধতি %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="উত্‍পাদন %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ছক %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="পরিশিষ্ট %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="অধ্যায় %n. %t"/>
+<l:template name="part" text="খন্ড %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="প্রশ্ন: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="প্রশ্ন: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="অনুচ্ছেদ “%t”"/>
+<l:template name="refsection" text="অনুচ্ছেদ “%t”"/>
+<l:template name="refsect1" text="অনুচ্ছেদ “%t”"/>
+<l:template name="refsect2" text="অনুচ্ছেদ “%t”"/>
+<l:template name="refsect3" text="অনুচ্ছেদ “%t”"/>
+<l:template name="sect1" text="অনুচ্ছেদ “%t”"/>
+<l:template name="sect2" text="অনুচ্ছেদ “%t”"/>
+<l:template name="sect3" text="অনুচ্ছেদ “%t”"/>
+<l:template name="sect4" text="অনুচ্ছেদ “%t”"/>
+<l:template name="sect5" text="অনুচ্ছেদ “%t”"/>
+<l:template name="section" text="অনুচ্ছেদ “%t”"/>
+<l:template name="simplesect" text="অনুচ্ছেদ “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="উত্তর: %n"/>
+<l:template name="appendix" text="পরিশিষ্ট %n"/>
+<l:template name="bridgehead" text="অনুচ্ছেদ %n"/>
+<l:template name="chapter" text="অধ্যায় %n"/>
+<l:template name="equation" text="সমীকরণ %n"/>
+<l:template name="example" text="উদাহরণ %n"/>
+<l:template name="figure" text="চিত্র %n"/>
+<l:template name="part" text="খন্ড %n"/>
+<l:template name="procedure" text="পদ্ধতি %n"/>
+<l:template name="productionset" text="উত্‍পাদন %n"/>
+<l:template name="qandadiv" text="প্রশ্নএবংউত্তর %n"/>
+<l:template name="qandaentry" text="প্রশ্ন: %n"/>
+<l:template name="question" text="প্রশ্ন: %n"/>
+<l:template name="sect1" text="অনুচ্ছেদ %n"/>
+<l:template name="sect2" text="অনুচ্ছেদ %n"/>
+<l:template name="sect3" text="অনুচ্ছেদ %n"/>
+<l:template name="sect4" text="অনুচ্ছেদ %n"/>
+<l:template name="sect5" text="অনুচ্ছেদ %n"/>
+<l:template name="section" text="অনুচ্ছেদ %n"/>
+<l:template name="table" text="ছক %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="পরিশিষ্ট %n, %t"/>
+<l:template name="bridgehead" text="অনুচ্ছেদ %n, “%t”"/>
+<l:template name="chapter" text="অধ্যায় %n, %t"/>
+<l:template name="equation" text="সমীকরণ %n, “%t”"/>
+<l:template name="example" text="উদাহরণ %n, “%t”"/>
+<l:template name="figure" text="চিত্র %n, “%t”"/>
+<l:template name="part" text="খন্ড %n, “%t”"/>
+<l:template name="procedure" text="পদ্ধতি %n, “%t”"/>
+<l:template name="productionset" text="উত্‍পাদন %n, “%t”"/>
+<l:template name="qandadiv" text="প্রশ্নএবংউত্তর %n, “%t”"/>
+<l:template name="refsect1" text="অনুচ্ছেদ “%t”"/>
+<l:template name="refsect2" text="অনুচ্ছেদ “%t”"/>
+<l:template name="refsect3" text="অনুচ্ছেদ “%t”"/>
+<l:template name="refsection" text="অনুচ্ছেদ “%t”"/>
+<l:template name="sect1" text="অনুচ্ছেদ %n, “%t”"/>
+<l:template name="sect2" text="অনুচ্ছেদ %n, “%t”"/>
+<l:template name="sect3" text="অনুচ্ছেদ %n, “%t”"/>
+<l:template name="sect4" text="অনুচ্ছেদ %n, “%t”"/>
+<l:template name="sect5" text="অনুচ্ছেদ %n, “%t”"/>
+<l:template name="section" text="অনুচ্ছেদ %n, “%t”"/>
+<l:template name="simplesect" text="অনুচ্ছেদ “%t”"/>
+<l:template name="table" text="ছক %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" এবং "/>
+<l:template name="seplast" text=", এবং "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="দেখুন %t"/>
+<l:template name="seealso" text="আরো দেখুন %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="শ্রোতা: "/>
+<l:template name="MsgLevel" text="স্তর: "/>
+<l:template name="MsgOrig" text="উত্‍স: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="জানুয়ারী"/>
+<l:template name="February" text="ফেব্রুয়ারী"/>
+<l:template name="March" text="মার্চ"/>
+<l:template name="April" text="এপ্রিল"/>
+<l:template name="May" text="মে"/>
+<l:template name="June" text="জুন"/>
+<l:template name="July" text="জুলাই"/>
+<l:template name="August" text="আগস্ট"/>
+<l:template name="September" text="সেপ্টেম্বর"/>
+<l:template name="October" text="অক্টোবর"/>
+<l:template name="November" text="নভেম্বর"/>
+<l:template name="December" text="ডিসেম্বর"/>
+<l:template name="Monday" text="সোমবার"/>
+<l:template name="Tuesday" text="মঙ্গলবার"/>
+<l:template name="Wednesday" text="বুধবার"/>
+<l:template name="Thursday" text="বৃহঃস্পতিবার"/>
+<l:template name="Friday" text="শুক্রবার"/>
+<l:template name="Saturday" text="শনিবার"/>
+<l:template name="Sunday" text="রবিবার"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="জানুয়ারী"/>
+<l:template name="Feb" text="ফেব্রুয়ারী"/>
+<l:template name="Mar" text="মার্চ"/>
+<l:template name="Apr" text="এপ্রিল"/>
+<l:template name="May" text="মে"/>
+<l:template name="Jun" text="জুন"/>
+<l:template name="Jul" text="জুলাই"/>
+<l:template name="Aug" text="আগস্ট"/>
+<l:template name="Sep" text="সেপ্টেম্বর"/>
+<l:template name="Oct" text="অক্টোবর"/>
+<l:template name="Nov" text="নভেম্বর"/>
+<l:template name="Dec" text="ডিসেম্বর"/>
+<l:template name="Mon" text="সোম"/>
+<l:template name="Tue" text="মঙ্গল"/>
+<l:template name="Wed" text="বুধ"/>
+<l:template name="Thu" text="বৃহঃস্পতি"/>
+<l:template name="Fri" text="শুক্র"/>
+<l:template name="Sat" text="শনি"/>
+<l:template name="Sun" text="রবি"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0445 Bangla (Bangladesh and India)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/bs.xml b/docs/xsl-generic/common/bs.xml
new file mode 100644
index 00000000..341c211d
--- /dev/null
+++ b/docs/xsl-generic/common/bs.xml
@@ -0,0 +1,656 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="bs" english-language-name="Bosnian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/bs.xml -->
+<!-- * -->
+<!-- * E-mail the edited bs.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sažetak"/>
+<l:gentext key="abstract" text="Sažetak"/>
+<l:gentext key="Answer" text="O:"/>
+<l:gentext key="answer" text="O:"/>
+<l:gentext key="Appendix" text="Dodatak"/>
+<l:gentext key="appendix" text="Dodatak"/>
+<l:gentext key="Article" text="Članak"/>
+<l:gentext key="article" text="Članak"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Literatura"/>
+<l:gentext key="bibliography" text="Literatura"/>
+<l:gentext key="Book" text="Knjiga"/>
+<l:gentext key="book" text="Knjiga"/>
+<l:gentext key="CAUTION" text="PAŽNJA"/>
+<l:gentext key="Caution" text="Pažnja"/>
+<l:gentext key="caution" text="Pažnja"/>
+<l:gentext key="Chapter" text="Poglavlje"/>
+<l:gentext key="chapter" text="Poglavlje"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="Kolofon"/>
+<l:gentext key="Copyright" text="Autorska prava"/>
+<l:gentext key="copyright" text="Autorska prava"/>
+<l:gentext key="Dedication" text="Posveta"/>
+<l:gentext key="dedication" text="Posveta"/>
+<l:gentext key="Edition" text="Izdanje"/>
+<l:gentext key="edition" text="Izdanje"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Jednačina"/>
+<l:gentext key="equation" text="Jednačina"/>
+<l:gentext key="Example" text="Primjer"/>
+<l:gentext key="example" text="Primjer"/>
+<l:gentext key="Figure" text="Slika"/>
+<l:gentext key="figure" text="Slika"/>
+<l:gentext key="Glossary" text="Glosar"/>
+<l:gentext key="glossary" text="Glosar"/>
+<l:gentext key="GlossSee" text="Vidi"/>
+<l:gentext key="glosssee" text="Vidi"/>
+<l:gentext key="GlossSeeAlso" text="Vidi takođe"/>
+<l:gentext key="glossseealso" text="Vidi takođe"/>
+<l:gentext key="IMPORTANT" text="VAŽNO"/>
+<l:gentext key="important" text="Važno"/>
+<l:gentext key="Important" text="Važno"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="Indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Pravne odredbe"/>
+<l:gentext key="legalnotice" text="Pravne odredbe"/>
+<l:gentext key="MsgAud" text="Primatelji"/>
+<l:gentext key="msgaud" text="Primatelji"/>
+<l:gentext key="MsgLevel" text="Nivo"/>
+<l:gentext key="msglevel" text="Nivo"/>
+<l:gentext key="MsgOrig" text="Izvor"/>
+<l:gentext key="msgorig" text="Izvor"/>
+<l:gentext key="NOTE" text="BILJEŠKA"/>
+<l:gentext key="Note" text="Bilješka"/>
+<l:gentext key="note" text="Bilješka"/>
+<l:gentext key="Part" text="Dio"/>
+<l:gentext key="part" text="Dio"/>
+<l:gentext key="Preface" text="Predgovor"/>
+<l:gentext key="preface" text="Predgovor"/>
+<l:gentext key="Procedure" text="Postupak"/>
+<l:gentext key="procedure" text="Postupak"/>
+<l:gentext key="ProductionSet" text="Produkcija"/>
+<l:gentext key="PubDate" text="Objavljeno"/>
+<l:gentext key="pubdate" text="Objavljeno"/>
+<l:gentext key="Published" text="Objavljeno"/>
+<l:gentext key="published" text="Objavljeno"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="P &amp; O"/>
+<l:gentext key="qandadiv" text="P &amp; O"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="P:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referenca"/>
+<l:gentext key="reference" text="Referenca"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Ime"/>
+<l:gentext key="refname" text="Ime"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Pregled"/>
+<l:gentext key="refsynopsisdiv" text="Pregled"/>
+<l:gentext key="RevHistory" text="Historija verzija"/>
+<l:gentext key="revhistory" text="Historija verzija"/>
+<l:gentext key="revision" text="Verzija"/>
+<l:gentext key="Revision" text="Verzija"/>
+<l:gentext key="sect1" text="Odjeljak"/>
+<l:gentext key="sect2" text="Odjeljak"/>
+<l:gentext key="sect3" text="Odjeljak"/>
+<l:gentext key="sect4" text="Odjeljak"/>
+<l:gentext key="sect5" text="Odjeljak"/>
+<l:gentext key="section" text="Odjeljak"/>
+<l:gentext key="Section" text="Odjeljak"/>
+<l:gentext key="see" text="vidi"/>
+<l:gentext key="See" text="Vidi"/>
+<l:gentext key="seealso" text="vidi takođe"/>
+<l:gentext key="Seealso" text="Vidi takođe"/>
+<l:gentext key="SeeAlso" text="Vidi takođe"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Indeks"/>
+<l:gentext key="SetIndex" text="Indeks"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="korak"/>
+<l:gentext key="Step" text="Korak"/>
+<l:gentext key="table" text="Tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Savjet"/>
+<l:gentext key="TIP" text="SAVJET"/>
+<l:gentext key="Tip" text="Savjet"/>
+<l:gentext key="Warning" text="Upozorenje"/>
+<l:gentext key="warning" text="Upozorenje"/>
+<l:gentext key="WARNING" text="UPOZORENJE"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text="od"/>
+<l:gentext key="Edited" text="Izdao"/>
+<l:gentext key="edited" text="Izdao"/>
+<l:gentext key="Editedby" text="Izdao"/>
+<l:gentext key="editedby" text="Izdao"/>
+<l:gentext key="in" text="u"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="nepostojeći element"/>
+<l:gentext key="notes" text="Bilješke"/>
+<l:gentext key="Notes" text="Bilješke"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="Str."/>
+<l:gentext key="Revisedby" text="Izmijenjeno od: "/>
+<l:gentext key="revisedby" text="Izmijenjeno od: "/>
+<l:gentext key="TableNotes" text="Napomene"/>
+<l:gentext key="tablenotes" text="Napomene"/>
+<l:gentext key="TableofContents" text="Sadržaj"/>
+<l:gentext key="tableofcontents" text="Sadržaj"/>
+<l:gentext key="unexpectedelementname" text="Neočkivano ime elementa"/>
+<l:gentext key="unsupported" text="nepodržano"/>
+<l:gentext key="xrefto" text="xref prema"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Spisak jednačina"/>
+<l:gentext key="ListofEquations" text="Spisak jednačina"/>
+<l:gentext key="ListofExamples" text="Spisak primjera"/>
+<l:gentext key="listofexamples" text="Spisak primjera"/>
+<l:gentext key="ListofFigures" text="Spisak slika"/>
+<l:gentext key="listoffigures" text="Spisak slika"/>
+<l:gentext key="ListofProcedures" text="Spisak postupaka"/>
+<l:gentext key="listofprocedures" text="Spisak postupaka"/>
+<l:gentext key="listoftables" text="Spisak tabela"/>
+<l:gentext key="ListofTables" text="Spisak tabela"/>
+<l:gentext key="ListofUnknown" text="Spisak ???"/>
+<l:gentext key="listofunknown" text="Spisak ???"/>
+<l:gentext key="nav-home" text="Početak"/>
+<l:gentext key="nav-next" text="Naprijed"/>
+<l:gentext key="nav-next-sibling" text="Brzo naprijed"/>
+<l:gentext key="nav-prev" text="Nazad"/>
+<l:gentext key="nav-prev-sibling" text="Brzo nazad"/>
+<l:gentext key="nav-up" text="Gore"/>
+<l:gentext key="nav-toc" text="Sadržaj"/>
+<l:gentext key="Draft" text="Nacrt"/>
+<l:gentext key="above" text="iznad"/>
+<l:gentext key="below" text="ispod"/>
+<l:gentext key="sectioncalled" text="odjeljak sa nazivom"/>
+<l:gentext key="index symbols" text="Simboli"/>
+<l:gentext key="lowercase.alpha" text="abcčćdđefghijklmnoprsštuvzž"/>
+<l:gentext key="uppercase.alpha" text="ABCČĆDĐEFGHIJKLMNOPRSŠTUVZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="3"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Jednačina %n. %t"/>
+<l:template name="example" text="Primjer %n. %t"/>
+<l:template name="figure" text="Slika %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Dio %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postupak %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcija %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="part" text="Dio %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" u %o"/>
+<l:template name="olink.page.citation" text=" (strana %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(strana %p)"/>
+<l:template name="docname" text=" u %o"/>
+<l:template name="docnamelong" text=" u dokumentu sa naslovom %o"/>
+<l:template name="pageabbrev" text="(s. %p)"/>
+<l:template name="Page" text="Strana %p"/>
+<l:template name="bridgehead" text="odjeljak sa nazivom “%t”"/>
+<l:template name="refsection" text="odjeljak sa nazivom “%t”"/>
+<l:template name="refsect1" text="odjeljak sa nazivom “%t”"/>
+<l:template name="refsect2" text="odjeljak sa nazivom “%t”"/>
+<l:template name="refsect3" text="odjeljak sa nazivom “%t”"/>
+<l:template name="sect1" text="odjeljak sa nazivom “%t”"/>
+<l:template name="sect2" text="odjeljak sa nazivom “%t”"/>
+<l:template name="sect3" text="odjeljak sa nazivom “%t”"/>
+<l:template name="sect4" text="odjeljak sa nazivom “%t”"/>
+<l:template name="sect5" text="odjeljak sa nazivom “%t”"/>
+<l:template name="section" text="odjeljak sa nazivom “%t”"/>
+<l:template name="simplesect" text="odjeljak sa nazivom “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="O: %n"/>
+<l:template name="appendix" text="Dodatak %n"/>
+<l:template name="bridgehead" text="Odjeljak %n"/>
+<l:template name="chapter" text="Poglavlje %n"/>
+<l:template name="equation" text="Jednačina %n"/>
+<l:template name="example" text="Primjer %n"/>
+<l:template name="figure" text="Slika %n"/>
+<l:template name="part" text="Dio %n"/>
+<l:template name="procedure" text="Postupak %n"/>
+<l:template name="productionset" text="Produkcija %n"/>
+<l:template name="qandadiv" text="P &amp; O %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Odjeljak %n"/>
+<l:template name="sect2" text="Odjeljak %n"/>
+<l:template name="sect3" text="Odjeljak %n"/>
+<l:template name="sect4" text="Odjeljak %n"/>
+<l:template name="sect5" text="Odjeljak %n"/>
+<l:template name="section" text="Odjeljak %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatak %n, %t"/>
+<l:template name="bridgehead" text="Odjeljak %n, “%t”"/>
+<l:template name="chapter" text="Poglavlje %n, %t"/>
+<l:template name="equation" text="Jednačina %n, “%t”"/>
+<l:template name="example" text="Primjer %n, “%t”"/>
+<l:template name="figure" text="Slika %n, “%t”"/>
+<l:template name="part" text="Dio %n, “%t”"/>
+<l:template name="procedure" text="Postupak %n, “%t”"/>
+<l:template name="productionset" text="Produkcija %n, “%t”"/>
+<l:template name="qandadiv" text="P &amp; O %n, “%t”"/>
+<l:template name="refsect1" text="odjeljak sa nazivom “%t”"/>
+<l:template name="refsect2" text="odjeljak sa nazivom “%t”"/>
+<l:template name="refsect3" text="odjeljak sa nazivom “%t”"/>
+<l:template name="refsection" text="odjeljak sa nazivom “%t”"/>
+<l:template name="sect1" text="Odjeljak %n, “%t”"/>
+<l:template name="sect2" text="Odjeljak %n, “%t”"/>
+<l:template name="sect3" text="Odjeljak %n, “%t”"/>
+<l:template name="sect4" text="Odjeljak %n, “%t”"/>
+<l:template name="sect5" text="Odjeljak %n, “%t”"/>
+<l:template name="section" text="Odjeljak %n, “%t”"/>
+<l:template name="simplesect" text="odjeljak sa nazivom “%t”"/>
+<l:template name="table" text="Tabela %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=" i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vidi %t"/>
+<l:template name="seealso" text="Vidi takođe %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Primatelji: "/>
+<l:template name="MsgLevel" text="Nivo: "/>
+<l:template name="MsgOrig" text="Izvor: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januar"/>
+<l:template name="February" text="Februar"/>
+<l:template name="March" text="Mart"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Maj"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="Juli"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="Septembar"/>
+<l:template name="October" text="Oktobar"/>
+<l:template name="November" text="Novembar"/>
+<l:template name="December" text="Decembar"/>
+<l:template name="Monday" text="Ponedeljak"/>
+<l:template name="Tuesday" text="Utorak"/>
+<l:template name="Wednesday" text="Srijeda"/>
+<l:template name="Thursday" text="Četvrtak"/>
+<l:template name="Friday" text="Petak"/>
+<l:template name="Saturday" text="Subota"/>
+<l:template name="Sunday" text="Nedelja"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Maj"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Pon"/>
+<l:template name="Tue" text="Uto"/>
+<l:template name="Wed" text="Sri"/>
+<l:template name="Thu" text="Čet"/>
+<l:template name="Fri" text="Pet"/>
+<l:template name="Sat" text="Sub"/>
+<l:template name="Sun" text="Ned"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x141A Bosnian (Bosnia/Herzegovina)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Simboli</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/ca.xml b/docs/xsl-generic/common/ca.xml
new file mode 100644
index 00000000..fa4332e5
--- /dev/null
+++ b/docs/xsl-generic/common/ca.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ca" english-language-name="Catalan">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ca.xml -->
+<!-- * -->
+<!-- * E-mail the edited ca.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resum"/>
+<l:gentext key="abstract" text="Resum"/>
+<l:gentext key="Answer" text="Resposta"/>
+<l:gentext key="answer" text="Resposta"/>
+<l:gentext key="Appendix" text="Apèndix"/>
+<l:gentext key="appendix" text="Apèndix"/>
+<l:gentext key="Article" text="Article"/>
+<l:gentext key="article" text="Article"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Llibre"/>
+<l:gentext key="book" text="Llibre"/>
+<l:gentext key="CAUTION" text="ATENCIÓ"/>
+<l:gentext key="Caution" text="Atenció"/>
+<l:gentext key="caution" text="Atenció"/>
+<l:gentext key="Chapter" text="Capítol"/>
+<l:gentext key="chapter" text="Capítol"/>
+<l:gentext key="Colophon" text="Colofó"/>
+<l:gentext key="colophon" text="Colofó"/>
+<l:gentext key="Copyright" text="Dret de reproducció"/>
+<l:gentext key="copyright" text="Dret de reproducció"/>
+<l:gentext key="Dedication" text="Dedicatòria"/>
+<l:gentext key="dedication" text="Dedicatòria"/>
+<l:gentext key="Edition" text="Edició"/>
+<l:gentext key="edition" text="Edició"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Equació"/>
+<l:gentext key="equation" text="Equació"/>
+<l:gentext key="Example" text="Exemple"/>
+<l:gentext key="example" text="Exemple"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="Figura"/>
+<l:gentext key="Glossary" text="Glossari"/>
+<l:gentext key="glossary" text="Glossari"/>
+<l:gentext key="GlossSee" text="Veure"/>
+<l:gentext key="glosssee" text="Veure"/>
+<l:gentext key="GlossSeeAlso" text="Veure també"/>
+<l:gentext key="glossseealso" text="Veure també"/>
+<l:gentext key="IMPORTANT" text="IMPORTANT"/>
+<l:gentext key="important" text="Important"/>
+<l:gentext key="Important" text="Important"/>
+<l:gentext key="Index" text="Índex alfabètic"/>
+<l:gentext key="index" text="Índex alfabètic"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Avís legal"/>
+<l:gentext key="legalnotice" text="Avís legal"/>
+<l:gentext key="MsgAud" text="Audiència"/>
+<l:gentext key="msgaud" text="Audiència"/>
+<l:gentext key="MsgLevel" text="Nivell"/>
+<l:gentext key="msglevel" text="Nivell"/>
+<l:gentext key="MsgOrig" text="Origen"/>
+<l:gentext key="msgorig" text="Origen"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="Nota"/>
+<l:gentext key="Part" text="Part"/>
+<l:gentext key="part" text="Part"/>
+<l:gentext key="Preface" text="Prefaci"/>
+<l:gentext key="preface" text="Prefaci"/>
+<l:gentext key="Procedure" text="Procediment"/>
+<l:gentext key="procedure" text="Procediment"/>
+<l:gentext key="ProductionSet" text="Producció"/>
+<l:gentext key="PubDate" text="Data de publicació"/>
+<l:gentext key="pubdate" text="Data de publicació"/>
+<l:gentext key="Published" text="Publicat"/>
+<l:gentext key="published" text="Publicat"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Pregunta i Resposta"/>
+<l:gentext key="qandadiv" text="Pregunta i Resposta"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Pregunta"/>
+<l:gentext key="question" text="Pregunta"/>
+<l:gentext key="RefEntry" text="Entrada de referència"/>
+<l:gentext key="refentry" text="Entrada de referència"/>
+<l:gentext key="Reference" text="Referència"/>
+<l:gentext key="reference" text="Referència"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nom"/>
+<l:gentext key="refname" text="Nom"/>
+<l:gentext key="RefSection" text="Secció de referència"/>
+<l:gentext key="refsection" text="Secció de referència"/>
+<l:gentext key="RefSynopsisDiv" text="Sinopsi"/>
+<l:gentext key="refsynopsisdiv" text="Sinopsi"/>
+<l:gentext key="RevHistory" text="Historial de revisions"/>
+<l:gentext key="revhistory" text="Historial de revisions"/>
+<l:gentext key="revision" text="Revisió"/>
+<l:gentext key="Revision" text="Revisió"/>
+<l:gentext key="sect1" text="Secció"/>
+<l:gentext key="sect2" text="Secció"/>
+<l:gentext key="sect3" text="Secció"/>
+<l:gentext key="sect4" text="Secció"/>
+<l:gentext key="sect5" text="Secció"/>
+<l:gentext key="section" text="Secció"/>
+<l:gentext key="Section" text="Secció"/>
+<l:gentext key="see" text="Veure"/>
+<l:gentext key="See" text="Veure"/>
+<l:gentext key="seealso" text="Veure també"/>
+<l:gentext key="Seealso" text="Veure també"/>
+<l:gentext key="SeeAlso" text="Veure També"/>
+<l:gentext key="set" text="Conjunt"/>
+<l:gentext key="Set" text="Conjunt"/>
+<l:gentext key="setindex" text="Índex del conjunt"/>
+<l:gentext key="SetIndex" text="Índex del conjunt"/>
+<l:gentext key="Sidebar" text="Barra lateral"/>
+<l:gentext key="sidebar" text="Barra lateral"/>
+<l:gentext key="step" text="Pas"/>
+<l:gentext key="Step" text="Pas"/>
+<l:gentext key="table" text="Taula"/>
+<l:gentext key="Table" text="Taula"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Suggeriment"/>
+<l:gentext key="TIP" text="SUGGERIMENT"/>
+<l:gentext key="Tip" text="Suggeriment"/>
+<l:gentext key="Warning" text="Avís"/>
+<l:gentext key="warning" text="Avís"/>
+<l:gentext key="WARNING" text="AVÍS"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text="per"/>
+<l:gentext key="Edited" text="Editat"/>
+<l:gentext key="edited" text="Editat"/>
+<l:gentext key="Editedby" text="Editat per"/>
+<l:gentext key="editedby" text="Editat per"/>
+<l:gentext key="in" text="a"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="element inexistent"/>
+<l:gentext key="notes" text="notes"/>
+<l:gentext key="Notes" text="Notes"/>
+<l:gentext key="Pgs" text="Pàgs."/>
+<l:gentext key="pgs" text="Pàgs."/>
+<l:gentext key="Revisedby" text="Revisat per: "/>
+<l:gentext key="revisedby" text="Revisat per: "/>
+<l:gentext key="TableNotes" text="Notes de taula"/>
+<l:gentext key="tablenotes" text="Notes de taula"/>
+<l:gentext key="TableofContents" text="Sumari"/>
+<l:gentext key="tableofcontents" text="Sumari"/>
+<l:gentext key="unexpectedelementname" text="nom d'element inesperat"/>
+<l:gentext key="unsupported" text="no reconeguda"/>
+<l:gentext key="xrefto" text="referència a"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Índex d'equacions"/>
+<l:gentext key="ListofEquations" text="Índex d'equacions"/>
+<l:gentext key="ListofExamples" text="Índex d'exemples"/>
+<l:gentext key="listofexamples" text="Índex d'exemples"/>
+<l:gentext key="ListofFigures" text="Índex de figures"/>
+<l:gentext key="listoffigures" text="Índex de figures"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Índex de taules"/>
+<l:gentext key="ListofTables" text="Índex de taules"/>
+<l:gentext key="ListofUnknown" text="Índex de desconegut ?"/>
+<l:gentext key="listofunknown" text="Índex de desconegut ?"/>
+<l:gentext key="nav-home" text="Inici"/>
+<l:gentext key="nav-next" text="Següent"/>
+<l:gentext key="nav-next-sibling" text="Avançar"/>
+<l:gentext key="nav-prev" text="Anterior"/>
+<l:gentext key="nav-prev-sibling" text="Retrocedir"/>
+<l:gentext key="nav-up" text="Pujar"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Esborrany"/>
+<l:gentext key="above" text="dalt"/>
+<l:gentext key="below" text="baix"/>
+<l:gentext key="sectioncalled" text="secció anomenada"/>
+<l:gentext key="index symbols" text="Símbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzàèéíòóúñç"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÀÈÉÍÒÓÚÑÇ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="last-first"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apèndix %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítol %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equació %n. %t"/>
+<l:template name="example" text="Exemple %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Part %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procediment %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Producció %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Taula %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apèndix %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Capítol %n. %t"/>
+<l:template name="part" text="Part %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="Resposta %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Pregunta %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Pregunta %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text=" “%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Resposta %n"/>
+<l:template name="appendix" text="Apèndix %n"/>
+<l:template name="bridgehead" text="Secció %n"/>
+<l:template name="chapter" text="Capítol %n"/>
+<l:template name="equation" text="Equació %n"/>
+<l:template name="example" text="Exemple %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Part %n"/>
+<l:template name="procedure" text="Procediment %n"/>
+<l:template name="productionset" text="Producció %n"/>
+<l:template name="qandadiv" text="Pregunta i Resposta %n"/>
+<l:template name="qandaentry" text="Pregunta %n"/>
+<l:template name="question" text="Pregunta %n"/>
+<l:template name="sect1" text="Secció %n"/>
+<l:template name="sect2" text="Secció %n"/>
+<l:template name="sect3" text="Secció %n"/>
+<l:template name="sect4" text="Secció %n"/>
+<l:template name="sect5" text="Secció %n"/>
+<l:template name="section" text="Secció %n"/>
+<l:template name="table" text="Taula %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apèndix %n, %t"/>
+<l:template name="bridgehead" text="Secció %n, “%t”"/>
+<l:template name="chapter" text="Capítol %n, %t"/>
+<l:template name="equation" text="Equació %n, “%t”"/>
+<l:template name="example" text="Exemple %n, “%t”"/>
+<l:template name="figure" text="Figura %n, “%t”"/>
+<l:template name="part" text="Part %n, “%t”"/>
+<l:template name="procedure" text="Procediment %n, “%t”"/>
+<l:template name="productionset" text="Producció %n, “%t”"/>
+<l:template name="qandadiv" text="Pregunta i Resposta %n, “%t”"/>
+<l:template name="refsect1" text="secció anomenada “%t”"/>
+<l:template name="refsect2" text="secció anomenada “%t”"/>
+<l:template name="refsect3" text="secció anomenada “%t”"/>
+<l:template name="refsection" text="secció anomenada “%t”"/>
+<l:template name="sect1" text="Secció %n, “%t”"/>
+<l:template name="sect2" text="Secció %n, “%t”"/>
+<l:template name="sect3" text="Secció %n, “%t”"/>
+<l:template name="sect4" text="Secció %n, “%t”"/>
+<l:template name="sect5" text="Secció %n, “%t”"/>
+<l:template name="section" text="Secció %n, “%t”"/>
+<l:template name="simplesect" text="secció anomenada “%t”"/>
+<l:template name="table" text="Taula %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=", i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Veure %t"/>
+<l:template name="seealso" text="Veure també %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiència: "/>
+<l:template name="MsgLevel" text="Nivell: "/>
+<l:template name="MsgOrig" text="Origen: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0403 Catalan"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/charmap.xml b/docs/xsl-generic/common/charmap.xml
new file mode 100644
index 00000000..6644f3e5
--- /dev/null
+++ b/docs/xsl-generic/common/charmap.xml
@@ -0,0 +1,185 @@
+<?xml version="1.0"?>
+
+<reference xml:id="charmap">
+ <info>
+ <title>Common » Character-Map Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the
+ character-map templates in the DocBook XSL Stylesheets.</para>
+
+ <note>
+
+<para>These templates are defined in a separate file from the set
+ of “common” templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+
+
+<para>The character-map templates don’t import or include
+ any DocBook XSL stylesheet parameters, so the
+ character-map templates can be used without importing the
+ whole set of parameters.</para>
+
+ </note>
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.apply-character-map">
+<refnamediv>
+<refname>apply-character-map</refname>
+<refpurpose>Applies an XSLT character map</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="apply-character-map"&gt;
+&lt;xsl:param name="content"/&gt;
+&lt;xsl:param name="map.contents"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template applies an <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character map</link>; that is, it causes certain
+ individual characters to be substituted with strings of one
+ or more characters. It is useful mainly for replacing
+ multiple “special” characters or symbols in the same target
+ content. It uses the value of
+ <parameter>map.contents</parameter> to do substitution on
+ <parameter>content</parameter>, and then returns the
+ modified contents.</para>
+
+ <note>
+
+<para>This template is a very slightly modified version of
+ Jeni Tennison’s <function>replace_strings</function>
+ template in the <link xlink:href="http://www.dpawson.co.uk/xsl/sect2/StringReplace.html#d9351e13">multiple string replacements</link> section of Dave Pawson’s
+ <link xlink:href="http://www.dpawson.co.uk/xsl/index.html">XSLT FAQ</link>.</para>
+
+
+<para>The <function>apply-string-subst-map</function>
+ template is essentially the same template as the
+ <function>apply-character-map</function> template; the
+ only difference is that in the map that
+ <function>apply-string-subst-map</function> expects, <tag class="attribute">oldstring</tag> and <tag class="attribute">newstring</tag> attributes are used
+ instead of <tag class="attribute">character</tag> and <tag class="attribute">string</tag> attributes.</para>
+
+ </note>
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>content</term>
+ <listitem>
+
+<para>The content on which to perform the character-map
+ substitution.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>map.contents</term>
+ <listitem>
+
+<para>A node set of elements, with each element having
+ the following attributes:
+
+<itemizedlist>
+ <listitem>
+ <simpara><tag class="attribute">character</tag>, a
+ character to be replaced</simpara>
+ </listitem>
+ <listitem>
+ <simpara><tag class="attribute">string</tag>, a
+ string with which to replace <tag class="attribute">character</tag></simpara>
+ </listitem>
+ </itemizedlist>
+
+ </para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.read-character-map">
+<refnamediv>
+<refname>read-character-map</refname>
+<refpurpose>Reads in all or part of an XSLT character map</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="read-character-map"&gt;
+&lt;xsl:param name="use.subset"/&gt;
+&lt;xsl:param name="subset.profile"/&gt;
+&lt;xsl:param name="uri"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The XSLT 2.0 specification describes <link xlink:href="http://www.w3.org/TR/xslt20/#character-maps">character maps</link> and explains how they may be used
+ to allow a specific character appearing in a text or
+ attribute node in a final result tree to be substituted by
+ a specified string of characters during serialization. The
+ <function>read-character-map</function> template provides a
+ means for reading and using character maps with XSLT
+ 1.0-based tools.</para>
+
+
+<para>This template reads the character-map contents from
+ <parameter>uri</parameter> (in full or in part, depending on
+ the value of the <parameter>use.subset</parameter>
+ parameter), then passes those contents to the
+ <function>apply-character-map</function> template, along with
+ <parameter>content</parameter>, the data on which to perform
+ the character substitution.</para>
+
+
+<para>Using the character map “in part” means that it uses only
+ those <tag>output-character</tag> elements that match the
+ XPath expression given in the value of the
+ <parameter>subset.profile</parameter> parameter. The current
+ implementation of that capability here relies on the
+ <function>evaluate</function> extension XSLT function.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>use.subset</term>
+ <listitem>
+
+<para>Specifies whether to use a subset of the character
+ map instead of the whole map; boolean
+ <literal>0</literal> or <literal>1</literal></para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>subset.profile</term>
+ <listitem>
+
+<para>XPath expression that specifies what subset of the
+ character map to use</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>uri</term>
+ <listitem>
+
+<para>URI for a character map</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1></refentry>
+</reference>
+
diff --git a/docs/xsl-generic/common/charmap.xsl b/docs/xsl-generic/common/charmap.xsl
new file mode 100644
index 00000000..3e0f5d4d
--- /dev/null
+++ b/docs/xsl-generic/common/charmap.xsl
@@ -0,0 +1,221 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc dyn saxon"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+<doc:reference xmlns="" xml:id="charmap">
+ <info>
+ <title>Common » Character-Map Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $
+ </releaseinfo>
+ </info>
+ <!-- * yes, partintro is a valid child of a reference... -->
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the
+ character-map templates in the DocBook XSL Stylesheets.</para>
+ <note>
+ <para>These templates are defined in a separate file from the set
+ of “common” templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+ <para>The character-map templates don’t import or include
+ any DocBook XSL stylesheet parameters, so the
+ character-map templates can be used without importing the
+ whole set of parameters.</para>
+ </note>
+ <para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+ </partintro>
+</doc:reference>
+
+<!-- ===================================== -->
+<doc:template name="apply-character-map" xmlns="">
+ <refpurpose>Applies an XSLT character map</refpurpose>
+ <refdescription id="apply-character-map-desc">
+ <para>This template applies an <link
+ xlink:href="http://www.w3.org/TR/xslt20/#character-maps"
+ >XSLT character map</link>; that is, it causes certain
+ individual characters to be substituted with strings of one
+ or more characters. It is useful mainly for replacing
+ multiple “special” characters or symbols in the same target
+ content. It uses the value of
+ <parameter>map.contents</parameter> to do substitution on
+ <parameter>content</parameter>, and then returns the
+ modified contents.</para>
+ <note>
+ <para>This template is a very slightly modified version of
+ Jeni Tennison’s <function>replace_strings</function>
+ template in the <link
+ xlink:href="http://www.dpawson.co.uk/xsl/sect2/StringReplace.html#d9351e13"
+ >multiple string replacements</link> section of Dave Pawson’s
+ <link xlink:href="http://www.dpawson.co.uk/xsl/index.html"
+ >XSLT FAQ</link>.</para>
+ <para>The <function>apply-string-subst-map</function>
+ template is essentially the same template as the
+ <function>apply-character-map</function> template; the
+ only difference is that in the map that
+ <function>apply-string-subst-map</function> expects, <tag
+ class="attribute">oldstring</tag> and <tag
+ class="attribute">newstring</tag> attributes are used
+ instead of <tag class="attribute">character</tag> and <tag
+ class="attribute">string</tag> attributes.</para>
+ </note>
+ </refdescription>
+ <refparameter id="apply-character-map-params">
+ <variablelist>
+ <varlistentry><term>content</term>
+ <listitem>
+ <para>The content on which to perform the character-map
+ substitution.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>map.contents</term>
+ <listitem>
+ <para>A node set of elements, with each element having
+ the following attributes:
+ <itemizedlist>
+ <listitem>
+ <simpara><tag class="attribute">character</tag>, a
+ character to be replaced</simpara>
+ </listitem>
+ <listitem>
+ <simpara><tag class="attribute">string</tag>, a
+ string with which to replace <tag
+ class="attribute">character</tag></simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:template>
+<xsl:template name="apply-character-map">
+ <xsl:param name="content"/>
+ <xsl:param name="map.contents"/>
+ <xsl:variable name="replaced_text">
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content" />
+ <xsl:with-param name="target"
+ select="$map.contents[1]/@character" />
+ <xsl:with-param name="replacement"
+ select="$map.contents[1]/@string" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$map.contents[2]">
+ <xsl:call-template name="apply-character-map">
+ <xsl:with-param name="content" select="$replaced_text" />
+ <xsl:with-param name="map.contents"
+ select="$map.contents[position() > 1]" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$replaced_text" />
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ===================================== -->
+<doc:template name="read-character-map" xmlns="">
+ <refpurpose>Reads in all or part of an XSLT character map</refpurpose>
+ <refdescription id="read-character-map-desc">
+ <para>The XSLT 2.0 specification describes <link
+ xlink:href="http://www.w3.org/TR/xslt20/#character-maps"
+ >character maps</link> and explains how they may be used
+ to allow a specific character appearing in a text or
+ attribute node in a final result tree to be substituted by
+ a specified string of characters during serialization. The
+ <function>read-character-map</function> template provides a
+ means for reading and using character maps with XSLT
+ 1.0-based tools.</para>
+ <para>This template reads the character-map contents from
+ <parameter>uri</parameter> (in full or in part, depending on
+ the value of the <parameter>use.subset</parameter>
+ parameter), then passes those contents to the
+ <function>apply-character-map</function> template, along with
+ <parameter>content</parameter>, the data on which to perform
+ the character substitution.</para>
+ <para>Using the character map “in part” means that it uses only
+ those <tag>output-character</tag> elements that match the
+ XPath expression given in the value of the
+ <parameter>subset.profile</parameter> parameter. The current
+ implementation of that capability here relies on the
+ <function>evaluate</function> extension XSLT function.</para>
+ </refdescription>
+ <refparameter id="read-character-map-params">
+ <variablelist>
+ <varlistentry><term>use.subset</term>
+ <listitem>
+ <para>Specifies whether to use a subset of the character
+ map instead of the whole map; boolean
+ <literal>0</literal> or <literal>1</literal></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>subset.profile</term>
+ <listitem>
+ <para>XPath expression that specifies what subset of the
+ character map to use</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>uri</term>
+ <listitem>
+ <para>URI for a character map</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:template>
+<xsl:template name="read-character-map">
+ <xsl:param name="use.subset"/>
+ <xsl:param name="subset.profile"/>
+ <xsl:param name="uri"/>
+ <xsl:choose>
+ <xsl:when test="$use.subset != 0">
+ <!-- *use a subset of the character map instead of the full map -->
+ <xsl:choose>
+ <!-- * xsltproc and Xalan both support dyn:evaluate() -->
+ <xsl:when test="function-available('dyn:evaluate')">
+ <xsl:copy-of select="document($uri)//*[local-name()='output-character']
+ [dyn:evaluate($subset.profile)]"/>
+ </xsl:when>
+ <!-- * Saxon has its own evaluate() and doesn't support dyn:evaluate() -->
+ <xsl:when test="function-available('saxon:evaluate')">
+ <xsl:copy-of select="document($uri)//*[local-name()='output-character']
+ [saxon:evaluate($subset.profile)]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes"
+>
+Error: To process character-map subsets, you must use an XSLT engine
+that supports the evaluate() XSLT extension function. Your XSLT engine
+does not support it.
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- *value of $use.subset is non-zero, so use the full map -->
+ <xsl:copy-of select="document($uri)//*[local-name()='output-character']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/common.xml b/docs/xsl-generic/common/common.xml
new file mode 100644
index 00000000..93ed030b
--- /dev/null
+++ b/docs/xsl-generic/common/common.xml
@@ -0,0 +1,622 @@
+<?xml version="1.0"?>
+
+<reference xml:id="base">
+ <info>
+ <title>Common » Base Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: common.xsl 7056 2007-07-17 13:56:09Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the “base”
+ set of common templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.is.component">
+<refnamediv>
+<refname>is.component</refname>
+<refpurpose>Tests if a given node is a component-level element</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="is.component"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+
+<para>The node which is to be tested.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.is.section">
+<refnamediv>
+<refname>is.section</refname>
+<refpurpose>Tests if a given node is a section-level element</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="is.section"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+
+<para>The node which is to be tested.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.section.level">
+<refnamediv>
+<refname>section.level</refname>
+<refpurpose>Returns the hierarchical level of a section</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="section.level"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template calculates the hierarchical level of a section.
+The element <tag>sect1</tag> is at level 1, <tag>sect2</tag> is
+at level 2, etc.</para>
+
+
+
+<para>Recursive sections are calculated down to the fifth level.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+
+<para>The section node for which the level should be calculated.
+Defaults to the context node.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>The section level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.qanda.section.level">
+<refnamediv>
+<refname>qanda.section.level</refname>
+<refpurpose>Returns the hierarchical level of a QandASet</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="qanda.section.level"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template calculates the hierarchical level of a QandASet.
+</para>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>The level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.select.mediaobject">
+<refnamediv>
+<refname>select.mediaobject</refname>
+<refpurpose>Selects and processes an appropriate media object from a list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="select.mediaobject"&gt;
+&lt;xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and processes
+the "right" object.</para>
+
+
+
+<para>This template relies on a template named
+"select.mediaobject.index" to determine which object
+in the list is appropriate.</para>
+
+
+
+<para>If no acceptable object is located, nothing happens.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+
+<para>The node list of potential objects to examine.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>Calls &lt;xsl:apply-templates&gt; on the selected object.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.select.mediaobject.index">
+<refnamediv>
+<refname>select.mediaobject.index</refname>
+<refpurpose>Selects the position of the appropriate media object from a list</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="select.mediaobject.index"&gt;
+&lt;xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/&gt;
+&lt;xsl:param name="count"&gt;1&lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and determines
+the "right" object. It returns the position of that object
+to be used by the calling template.</para>
+
+
+
+<para>If the parameter <parameter>use.role.for.mediaobject</parameter>
+is nonzero, then it first checks for an object with
+a role attribute of the appropriate value. It takes the first
+of those. Otherwise, it takes the first acceptable object
+through a recursive pass through the list.</para>
+
+
+
+<para>This template relies on a template named "is.acceptable.mediaobject"
+to determine if a given object is an acceptable graphic. The semantics
+of media objects is that the first acceptable graphic should be used.
+</para>
+
+
+
+<para>If no acceptable object is located, no index is returned.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+
+<para>The node list of potential objects to examine.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>count</term>
+<listitem>
+
+<para>The position in the list currently being considered by the
+recursive process.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>Returns the position in the original list of the selected object.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.is.acceptable.mediaobject">
+<refnamediv>
+<refname>is.acceptable.mediaobject</refname>
+<refpurpose>Returns '1' if the specified media object is recognized</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="is.acceptable.mediaobject"&gt;
+&lt;xsl:param name="object"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template examines a media object and returns '1' if the
+object is recognized as a graphic.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>object</term>
+<listitem>
+
+<para>The media object to consider.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>0 or 1</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.check.id.unique">
+<refnamediv>
+<refname>check.id.unique</refname>
+<refpurpose>Warn users about references to non-unique IDs</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="check.id.unique"&gt;
+&lt;xsl:param name="linkend"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.id.unique</function> prints
+a warning message to the user if either the ID does not exist or
+the ID is not unique.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.check.idref.targets">
+<refnamediv>
+<refname>check.idref.targets</refname>
+<refpurpose>Warn users about incorrectly typed references</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="check.idref.targets"&gt;
+&lt;xsl:param name="linkend"/&gt;
+&lt;xsl:param name="element-list"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.idref.targets</function> makes sure that the element
+pointed to by the link is one of the elements listed in
+<varname>element-list</varname> and warns the user otherwise.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.copyright.years">
+<refnamediv>
+<refname>copyright.years</refname>
+<refpurpose>Print a set of years with collapsed ranges</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="copyright.years"&gt;
+&lt;xsl:param name="years"/&gt;
+&lt;xsl:param name="print.ranges" select="1"/&gt;
+&lt;xsl:param name="single.year.ranges" select="0"/&gt;
+&lt;xsl:param name="firstyear" select="0"/&gt;
+&lt;xsl:param name="nextyear" select="0"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template prints a list of year elements with consecutive
+years printed as a range. In other words:</para>
+
+
+<screen>&lt;year&gt;1992&lt;/year&gt;
+&lt;year&gt;1993&lt;/year&gt;
+&lt;year&gt;1994&lt;/year&gt;</screen>
+
+
+<para>is printed <quote>1992-1994</quote>, whereas:</para>
+
+
+<screen>&lt;year&gt;1992&lt;/year&gt;
+&lt;year&gt;1994&lt;/year&gt;</screen>
+
+
+<para>is printed <quote>1992, 1994</quote>.</para>
+
+
+
+<para>This template assumes that all the year elements contain only
+decimal year numbers, that the elements are sorted in increasing
+numerical order, that there are no duplicates, and that all the years
+are expressed in full <quote>century+year</quote>
+(<quote>1999</quote> not <quote>99</quote>) notation.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>years</term>
+<listitem>
+
+<para>The initial set of year elements.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>print.ranges</term>
+<listitem>
+
+<para>If non-zero, multi-year ranges are collapsed. If zero, all years
+are printed discretely.</para>
+
+</listitem>
+</varlistentry>
+<varlistentry><term>single.year.ranges</term>
+<listitem>
+
+<para>If non-zero, two consecutive years will be printed as a range,
+otherwise, they will be printed discretely. In other words, a single
+year range is <quote>1991-1992</quote> but discretely it's
+<quote>1991, 1992</quote>.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1><refsect1><title>Returns</title>
+
+<para>This template returns the formatted list of years.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.find.path.params">
+<refnamediv>
+<refname>find.path.params</refname>
+<refpurpose>Search in a table for the "best" match for the node</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="find.path.params"&gt;
+&lt;xsl:param name="node" select="."/&gt;
+&lt;xsl:param name="table" select="''"/&gt;
+&lt;xsl:param name="location"&gt;
+ &lt;xsl:call-template name="xpath.location"&gt;
+ &lt;xsl:with-param name="node" select="$node"/&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template searches in a table for the value that most-closely
+(in the typical best-match sense of XSLT) matches the current (element)
+node location.</para>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.string.upper">
+<refnamediv>
+<refname>string.upper</refname>
+<refpurpose>Converts a string to all uppercase letters</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="string.upper"&gt;
+&lt;xsl:param name="string" select="''"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>Given a string, this template does a language-aware conversion
+of that string to all uppercase letters, based on the values of the
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal>. All other characters are left
+unchanged.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+
+<para>The string to convert to uppercase.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.string.lower">
+<refnamediv>
+<refname>string.lower</refname>
+<refpurpose>Converts a string to all lowercase letters</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="string.lower"&gt;
+&lt;xsl:param name="string" select="''"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>Given a string, this template does a language-aware conversion
+of that string to all lowercase letters, based on the values of the
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal>. All other characters are left
+unchanged.</para>
+
+</refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+
+<para>The string to convert to lowercase.</para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.select.choice.separator">
+<refnamediv>
+<refname>select.choice.separator</refname>
+<refpurpose>Returns localized choice separator</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="select.choice.separator"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template enables auto-generation of an appropriate
+ localized "choice" separator (for example, "and" or "or") before
+ the final item in an inline list (though it could also be useful
+ for generating choice separators for non-inline lists).</para>
+
+
+<para>It currently works by evaluating a processing instruction
+ (PI) of the form &lt;?dbchoice choice="foo"?&gt; :
+
+<itemizedlist>
+ <listitem>
+ <simpara>if the value of the <tag>choice</tag>
+ pseudo-attribute is "and" or "or", returns a localized "and"
+ or "or"</simpara>
+ </listitem>
+ <listitem>
+ <simpara>otherwise returns the literal value of the
+ <tag>choice</tag> pseudo-attribute</simpara>
+ </listitem>
+ </itemizedlist>
+
+ The latter is provided only as a temporary workaround because the
+ locale files do not currently have translations for the word
+ <wordasword>or</wordasword>. So if you want to generate a a
+ logical "or" separator in French (for example), you currently need
+ to do this:
+ <literallayout>&lt;?dbchoice choice="ou"?&gt;</literallayout>
+ </para>
+
+ <warning>
+
+<para>The <tag>dbchoice</tag> processing instruction is
+ an unfortunate hack; support for it may disappear in the future
+ (particularly if and when a more appropriate means for marking
+ up "choice" lists becomes available in DocBook).</para>
+
+ </warning>
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.evaluate.info.profile">
+<refnamediv>
+<refname>evaluate.info.profile</refname>
+<refpurpose>Evaluates an info profile</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="evaluate.info.profile"&gt;
+&lt;xsl:param name="profile"/&gt;
+&lt;xsl:param name="info"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This template evaluates an "info profile" matching the XPath
+ expression given by the <parameter>profile</parameter>
+ parameter. It relies on the XSLT <function>evaluate()</function>
+ extension function.</para>
+
+
+
+<para>The value of the <parameter>profile</parameter> parameter
+ can include the literal string <literal>$info</literal>. If found
+ in the value of the <parameter>profile</parameter> parameter, the
+ literal string <literal>$info</literal> string is replaced with
+ the value of the <parameter>info</parameter> parameter, which
+ should be a set of <replaceable>*info</replaceable> nodes; the
+ expression is then evaluated using the XSLT
+ <function>evaluate()</function> extension function.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>profile</term>
+ <listitem>
+
+<para>A string representing an XPath expression </para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of *info nodes</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a node (the result of evaluating the
+ <parameter>profile</parameter> parameter)</para>
+
+ </refsect1></refentry>
+</reference>
+
diff --git a/docs/xsl-generic/common/common.xsl b/docs/xsl-generic/common/common.xsl
new file mode 100644
index 00000000..0854ea68
--- /dev/null
+++ b/docs/xsl-generic/common/common.xsl
@@ -0,0 +1,1981 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ exclude-result-prefixes="doc dyn saxon"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: common.xsl 7056 2007-07-17 13:56:09Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns="" xml:id="base">
+ <info>
+ <title>Common » Base Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: common.xsl 7056 2007-07-17 13:56:09Z xmldoc $
+ </releaseinfo>
+ </info>
+ <!-- * yes, partintro is a valid child of a reference... -->
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the “base”
+ set of common templates in the DocBook XSL Stylesheets.</para>
+ <para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+<!-- Establish strip/preserve whitespace rules -->
+
+<xsl:preserve-space elements="*"/>
+
+<xsl:strip-space elements="
+abstract affiliation anchor answer appendix area areaset areaspec
+artheader article audiodata audioobject author authorblurb authorgroup
+beginpage bibliodiv biblioentry bibliography biblioset blockquote book
+bookbiblio bookinfo callout calloutlist caption caution chapter
+citerefentry cmdsynopsis co collab colophon colspec confgroup
+copyright dedication docinfo editor entrytbl epigraph equation
+example figure footnote footnoteref formalpara funcprototype
+funcsynopsis glossary glossdef glossdiv glossentry glosslist graphicco
+group highlights imagedata imageobject imageobjectco important index
+indexdiv indexentry indexterm info informalequation informalexample
+informalfigure informaltable inlineequation inlinemediaobject
+itemizedlist itermset keycombo keywordset legalnotice listitem lot
+mediaobject mediaobjectco menuchoice msg msgentry msgexplan msginfo
+msgmain msgrel msgset msgsub msgtext note objectinfo
+orderedlist othercredit part partintro preface printhistory procedure
+programlistingco publisher qandadiv qandaentry qandaset question
+refentry reference refmeta refnamediv refsection refsect1 refsect1info refsect2
+refsect2info refsect3 refsect3info refsynopsisdiv refsynopsisdivinfo
+revhistory revision row sbr screenco screenshot sect1 sect1info sect2
+sect2info sect3 sect3info sect4 sect4info sect5 sect5info section
+sectioninfo seglistitem segmentedlist seriesinfo set setindex setinfo
+shortcut sidebar simplelist simplesect spanspec step subject
+subjectset substeps synopfragment table tbody textobject tfoot tgroup
+thead tip toc tocchap toclevel1 toclevel2 toclevel3 toclevel4
+toclevel5 tocpart varargs variablelist varlistentry videodata
+videoobject void warning subjectset
+
+classsynopsis
+constructorsynopsis
+destructorsynopsis
+fieldsynopsis
+methodparam
+methodsynopsis
+ooclass
+ooexception
+oointerface
+simplemsgentry
+manvolnum
+"/>
+<!-- ====================================================================== -->
+
+<doc:template name="is.component" xmlns="">
+<refpurpose>Tests if a given node is a component-level element</refpurpose>
+
+<refdescription id="is.component-desc">
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+</refdescription>
+
+<refparameter id="is.component-params">
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+<para>The node which is to be tested.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="is.component-returns">
+<para>This template returns '1' if the specified node is a component
+(Chapter, Appendix, etc.), and '0' otherwise.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="is.component">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($node) = 'appendix'
+ or local-name($node) = 'article'
+ or local-name($node) = 'chapter'
+ or local-name($node) = 'preface'
+ or local-name($node) = 'bibliography'
+ or local-name($node) = 'glossary'
+ or local-name($node) = 'index'">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="is.section" xmlns="">
+<refpurpose>Tests if a given node is a section-level element</refpurpose>
+
+<refdescription id="is.section-desc">
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+</refdescription>
+
+<refparameter id="is.section-params">
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+<para>The node which is to be tested.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="is.section-returns">
+<para>This template returns '1' if the specified node is a section
+(Section, Sect1, Sect2, etc.), and '0' otherwise.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="is.section">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($node) = 'section'
+ or local-name($node) = 'sect1'
+ or local-name($node) = 'sect2'
+ or local-name($node) = 'sect3'
+ or local-name($node) = 'sect4'
+ or local-name($node) = 'sect5'
+ or local-name($node) = 'refsect1'
+ or local-name($node) = 'refsect2'
+ or local-name($node) = 'refsect3'
+ or local-name($node) = 'simplesect'">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="section.level" xmlns="">
+<refpurpose>Returns the hierarchical level of a section</refpurpose>
+
+<refdescription id="section.level-desc">
+<para>This template calculates the hierarchical level of a section.
+The element <tag>sect1</tag> is at level 1, <tag>sect2</tag> is
+at level 2, etc.</para>
+
+<para>Recursive sections are calculated down to the fifth level.</para>
+</refdescription>
+
+<refparameter id="section.level-params">
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+<para>The section node for which the level should be calculated.
+Defaults to the context node.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="section.level-returns">
+<para>The section level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="section.level">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='sect1'">1</xsl:when>
+ <xsl:when test="local-name($node)='sect2'">2</xsl:when>
+ <xsl:when test="local-name($node)='sect3'">3</xsl:when>
+ <xsl:when test="local-name($node)='sect4'">4</xsl:when>
+ <xsl:when test="local-name($node)='sect5'">5</xsl:when>
+ <xsl:when test="local-name($node)='section'">
+ <xsl:choose>
+ <xsl:when test="$node/../../../../../../section">6</xsl:when>
+ <xsl:when test="$node/../../../../../section">5</xsl:when>
+ <xsl:when test="$node/../../../../section">4</xsl:when>
+ <xsl:when test="$node/../../../section">3</xsl:when>
+ <xsl:when test="$node/../../section">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name($node)='refsect1' or
+ local-name($node)='refsect2' or
+ local-name($node)='refsect3' or
+ local-name($node)='refsection' or
+ local-name($node)='refsynopsisdiv'">
+ <xsl:call-template name="refentry.section.level">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node)='simplesect'">
+ <xsl:choose>
+ <xsl:when test="$node/../../sect1">2</xsl:when>
+ <xsl:when test="$node/../../sect2">3</xsl:when>
+ <xsl:when test="$node/../../sect3">4</xsl:when>
+ <xsl:when test="$node/../../sect4">5</xsl:when>
+ <xsl:when test="$node/../../sect5">5</xsl:when>
+ <xsl:when test="$node/../../section">
+ <xsl:choose>
+ <xsl:when test="$node/../../../../../section">5</xsl:when>
+ <xsl:when test="$node/../../../../section">4</xsl:when>
+ <xsl:when test="$node/../../../section">3</xsl:when>
+ <xsl:otherwise>2</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template><!-- section.level -->
+
+<doc:template name="qanda.section.level" xmlns="">
+<refpurpose>Returns the hierarchical level of a QandASet</refpurpose>
+
+<refdescription id="qanda.section.level-desc">
+<para>This template calculates the hierarchical level of a QandASet.
+</para>
+</refdescription>
+
+<refreturn id="qanda.section.level-returns">
+<para>The level, <quote>1</quote>, <quote>2</quote>, etc.
+</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="qanda.section.level">
+ <xsl:variable name="section"
+ select="(ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect5
+ |ancestor::sect4
+ |ancestor::sect3
+ |ancestor::sect2
+ |ancestor::sect1
+ |ancestor::refsect3
+ |ancestor::refsect2
+ |ancestor::refsect1)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($section) = '0'">1</xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Finds the total section depth of a section in a refentry -->
+<xsl:template name="refentry.section.level">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="RElevel">
+ <xsl:call-template name="refentry.level">
+ <xsl:with-param name="node" select="$node/ancestor::refentry[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="levelinRE">
+ <xsl:choose>
+ <xsl:when test="local-name($node)='refsynopsisdiv'">1</xsl:when>
+ <xsl:when test="local-name($node)='refsect1'">1</xsl:when>
+ <xsl:when test="local-name($node)='refsect2'">2</xsl:when>
+ <xsl:when test="local-name($node)='refsect3'">3</xsl:when>
+ <xsl:when test="local-name($node)='refsection'">
+ <xsl:choose>
+ <xsl:when test="$node/../../../../../refsection">5</xsl:when>
+ <xsl:when test="$node/../../../../refsection">4</xsl:when>
+ <xsl:when test="$node/../../../refsection">3</xsl:when>
+ <xsl:when test="$node/../../refsection">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$levelinRE + $RElevel"/>
+</xsl:template>
+
+<!-- Finds the section depth of a refentry -->
+<xsl:template name="refentry.level">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="container"
+ select="($node/ancestor::section |
+ $node/ancestor::sect1 |
+ $node/ancestor::sect2 |
+ $node/ancestor::sect3 |
+ $node/ancestor::sect4 |
+ $node/ancestor::sect5)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$container">
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$container"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="qandadiv.section.level">
+ <xsl:variable name="section.level">
+ <xsl:call-template name="qanda.section.level"/>
+ </xsl:variable>
+ <xsl:variable name="anc.divs" select="ancestor::qandadiv"/>
+
+ <xsl:value-of select="count($anc.divs) + number($section.level)"/>
+</xsl:template>
+
+<xsl:template name="question.answer.label">
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="label" select="@label"/>
+
+<!--
+ (hnr (hierarchical-number-recursive (normalize "qandadiv") node))
+
+ (parsect (ancestor-member node (section-element-list)))
+
+ (defnum (if (and %qanda-inherit-numeration%
+ %section-autolabel%)
+ (if (node-list-empty? parsect)
+ (section-autolabel-prefix node)
+ (section-autolabel parsect))
+ ""))
+
+ (hnumber (let loop ((numlist hnr) (number defnum)
+ (sep (if (equal? defnum "") "" ".")))
+ (if (null? numlist)
+ number
+ (loop (cdr numlist)
+ (string-append number
+ sep
+ (number->string (car numlist)))
+ "."))))
+ (cnumber (child-number (parent node)))
+ (number (string-append hnumber
+ (if (equal? hnumber "")
+ ""
+ ".")
+ (number->string cnumber))))
+-->
+
+ <xsl:choose>
+ <xsl:when test="$deflabel = 'qanda'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'question'">question</xsl:when>
+ <xsl:when test="local-name(.) = 'answer'">answer</xsl:when>
+ <xsl:when test="local-name(.) = 'qandadiv'">qandadiv</xsl:when>
+ <xsl:otherwise>qandaset</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$deflabel = 'label'">
+ <xsl:value-of select="$label"/>
+ </xsl:when>
+ <xsl:when test="$deflabel = 'number'
+ and local-name(.) = 'question'">
+ <xsl:apply-templates select="ancestor::qandaset[1]"
+ mode="number"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::qandadiv">
+ <xsl:apply-templates select="ancestor::qandadiv[1]"
+ mode="number"/>
+ <xsl:apply-templates select="ancestor::qandaentry"
+ mode="number"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="ancestor::qandaentry"
+ mode="number"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- nothing -->
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="number">
+ <!-- FIXME: -->
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="number">
+ <xsl:number level="multiple" from="qandaset" format="1."/>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="number">
+ <xsl:choose>
+ <xsl:when test="ancestor::qandadiv">
+ <xsl:number level="single" from="qandadiv" format="1."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="single" from="qandaset" format="1."/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="object.id">
+ <xsl:param name="object" select="."/>
+ <xsl:choose>
+ <xsl:when test="$object/@id">
+ <xsl:value-of select="$object/@id"/>
+ </xsl:when>
+ <xsl:when test="$object/@xml:id">
+ <xsl:value-of select="$object/@xml:id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="generate-id($object)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="person.name">
+ <!-- Formats a personal name. Handles corpauthor as a special case. -->
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="$node/@role">
+ <xsl:value-of select="$node/@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'styles'"/>
+ <xsl:with-param name="name" select="'person-name'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- the personname element is a specialcase -->
+ <xsl:when test="$node/personname">
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$node/personname"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- handle corpauthor as a special case...-->
+ <!-- * MikeSmith 2007-06: I'm wondering if the person.name template -->
+ <!-- * actually ever gets called to handle corpauthor.. maybe -->
+ <!-- * we don't actually need to check for corpauthor here. -->
+ <xsl:when test="local-name($node)='corpauthor'">
+ <xsl:apply-templates select="$node"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:choose>
+ <!-- Handle case when personname contains only general markup (DocBook 5.0) -->
+ <xsl:when test="$node/self::personname and not($node/firstname or $node/honorific or $node/lineage or $node/othername or $node/surname)">
+ <xsl:apply-templates select="$node/node()"/>
+ </xsl:when>
+ <xsl:when test="$style = 'family-given'">
+ <xsl:call-template name="person.name.family-given">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$style = 'last-first'">
+ <xsl:call-template name="person.name.last-first">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name.first-last">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="person.name.family-given">
+ <xsl:param name="node" select="."/>
+
+ <!-- The family-given style applies a convention for identifying given -->
+ <!-- and family names in locales where it may be ambiguous -->
+ <xsl:apply-templates select="$node//surname[1]"/>
+
+ <xsl:if test="$node//surname and $node//firstname">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="$node//firstname[1]"/>
+
+ <xsl:text> [FAMILY Given]</xsl:text>
+</xsl:template>
+
+<xsl:template name="person.name.last-first">
+ <xsl:param name="node" select="."/>
+
+ <xsl:apply-templates select="$node//surname[1]"/>
+
+ <xsl:if test="$node//surname and $node//firstname">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="$node//firstname[1]"/>
+</xsl:template>
+
+<xsl:template name="person.name.first-last">
+ <xsl:param name="node" select="."/>
+
+ <xsl:if test="$node//honorific">
+ <xsl:apply-templates select="$node//honorific[1]"/>
+ <xsl:value-of select="$punct.honorific"/>
+ </xsl:if>
+
+ <xsl:if test="$node//firstname">
+ <xsl:if test="$node//honorific">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$node//firstname[1]"/>
+ </xsl:if>
+
+ <xsl:if test="$node//othername and $author.othername.in.middle != 0">
+ <xsl:if test="$node//honorific or $node//firstname">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$node//othername[1]"/>
+ </xsl:if>
+
+ <xsl:if test="$node//surname">
+ <xsl:if test="$node//honorific or $node//firstname
+ or ($node//othername and $author.othername.in.middle != 0)">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$node//surname[1]"/>
+ </xsl:if>
+
+ <xsl:if test="$node//lineage">
+ <xsl:text>, </xsl:text>
+ <xsl:apply-templates select="$node//lineage[1]"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="person.name.list">
+ <!-- Return a formatted string representation of the contents of
+ the current element. The current element must contain one or
+ more AUTHORs, CORPAUTHORs, OTHERCREDITs, and/or EDITORs.
+
+ John Doe
+ or
+ John Doe and Jane Doe
+ or
+ John Doe, Jane Doe, and A. Nonymous
+ -->
+ <xsl:param name="person.list"
+ select="author|corpauthor|othercredit|editor"/>
+ <xsl:param name="person.count" select="count($person.list)"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count &gt; $person.count"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$person.list[position()=$count]"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$person.count = 2 and $count = 1">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep2'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'seplast'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep'"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:call-template name="person.name.list">
+ <xsl:with-param name="person.list" select="$person.list"/>
+ <xsl:with-param name="person.count" select="$person.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template><!-- person.name.list -->
+
+<!-- === synopsis ======================================================= -->
+<!-- The following definitions match those given in the reference
+ documentation for DocBook V3.0
+-->
+
+<xsl:variable name="arg.choice.opt.open.str">[</xsl:variable>
+<xsl:variable name="arg.choice.opt.close.str">]</xsl:variable>
+<xsl:variable name="arg.choice.req.open.str">{</xsl:variable>
+<xsl:variable name="arg.choice.req.close.str">}</xsl:variable>
+<xsl:variable name="arg.choice.plain.open.str"><xsl:text> </xsl:text></xsl:variable>
+<xsl:variable name="arg.choice.plain.close.str"><xsl:text> </xsl:text></xsl:variable>
+<xsl:variable name="arg.choice.def.open.str">[</xsl:variable>
+<xsl:variable name="arg.choice.def.close.str">]</xsl:variable>
+<xsl:variable name="arg.rep.repeat.str">...</xsl:variable>
+<xsl:variable name="arg.rep.norepeat.str"></xsl:variable>
+<xsl:variable name="arg.rep.def.str"></xsl:variable>
+<xsl:variable name="arg.or.sep"> | </xsl:variable>
+<xsl:variable name="cmdsynopsis.hanging.indent">4pi</xsl:variable>
+
+<!-- ====================================================================== -->
+
+<!--
+<xsl:template name="xref.g.subst">
+ <xsl:param name="string"></xsl:param>
+ <xsl:param name="target" select="."/>
+ <xsl:variable name="subst">%g</xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, $subst)">
+ <xsl:value-of select="substring-before($string, $subst)"/>
+ <xsl:call-template name="gentext.element.name">
+ <xsl:with-param name="element.name" select="local-name($target)"/>
+ </xsl:call-template>
+ <xsl:call-template name="xref.g.subst">
+ <xsl:with-param name="string"
+ select="substring-after($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="xref.t.subst">
+ <xsl:param name="string"></xsl:param>
+ <xsl:param name="target" select="."/>
+ <xsl:variable name="subst">%t</xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, $subst)">
+ <xsl:call-template name="xref.g.subst">
+ <xsl:with-param name="string"
+ select="substring-before($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ <xsl:call-template name="title.xref">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ <xsl:call-template name="xref.t.subst">
+ <xsl:with-param name="string"
+ select="substring-after($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="xref.g.subst">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="xref.n.subst">
+ <xsl:param name="string"></xsl:param>
+ <xsl:param name="target" select="."/>
+ <xsl:variable name="subst">%n</xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, $subst)">
+ <xsl:call-template name="xref.t.subst">
+ <xsl:with-param name="string"
+ select="substring-before($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ <xsl:call-template name="number.xref">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ <xsl:call-template name="xref.t.subst">
+ <xsl:with-param name="string"
+ select="substring-after($string, $subst)"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="xref.t.subst">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="subst.xref.text">
+ <xsl:param name="xref.text"></xsl:param>
+ <xsl:param name="target" select="."/>
+
+ <xsl:call-template name="xref.n.subst">
+ <xsl:with-param name="string" select="$xref.text"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+</xsl:template>
+-->
+
+<!-- ====================================================================== -->
+
+<xsl:template name="filename-basename">
+ <!-- We assume all filenames are really URIs and use "/" -->
+ <xsl:param name="filename"></xsl:param>
+ <xsl:param name="recurse" select="false()"/>
+
+ <xsl:choose>
+ <xsl:when test="substring-after($filename, '/') != ''">
+ <xsl:call-template name="filename-basename">
+ <xsl:with-param name="filename"
+ select="substring-after($filename, '/')"/>
+ <xsl:with-param name="recurse" select="true()"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="filename-extension">
+ <xsl:param name="filename"></xsl:param>
+ <xsl:param name="recurse" select="false()"/>
+
+ <!-- Make sure we only look at the base name... -->
+ <xsl:variable name="basefn">
+ <xsl:choose>
+ <xsl:when test="$recurse">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="filename-basename">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="substring-after($basefn, '.') != ''">
+ <xsl:call-template name="filename-extension">
+ <xsl:with-param name="filename"
+ select="substring-after($basefn, '.')"/>
+ <xsl:with-param name="recurse" select="true()"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$recurse">
+ <xsl:value-of select="$basefn"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="select.mediaobject" xmlns="">
+<refpurpose>Selects and processes an appropriate media object from a list</refpurpose>
+
+<refdescription id="select.mediaobject-desc">
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and processes
+the "right" object.</para>
+
+<para>This template relies on a template named
+"select.mediaobject.index" to determine which object
+in the list is appropriate.</para>
+
+<para>If no acceptable object is located, nothing happens.</para>
+</refdescription>
+
+<refparameter id="select.mediaobject-params">
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+<para>The node list of potential objects to examine.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="select.mediaobject-returns">
+<para>Calls &lt;xsl:apply-templates&gt; on the selected object.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="select.mediaobject">
+ <xsl:param name="olist"
+ select="imageobject|imageobjectco
+ |videoobject|audioobject|textobject"/>
+
+ <xsl:variable name="mediaobject.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$mediaobject.index != ''">
+ <xsl:apply-templates select="$olist[position() = $mediaobject.index]"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="select.mediaobject.index" xmlns="">
+<refpurpose>Selects the position of the appropriate media object from a list</refpurpose>
+
+<refdescription id="select.mediaobject.index-desc">
+<para>This template takes a list of media objects (usually the
+children of a mediaobject or inlinemediaobject) and determines
+the "right" object. It returns the position of that object
+to be used by the calling template.</para>
+
+<para>If the parameter <parameter>use.role.for.mediaobject</parameter>
+is nonzero, then it first checks for an object with
+a role attribute of the appropriate value. It takes the first
+of those. Otherwise, it takes the first acceptable object
+through a recursive pass through the list.</para>
+
+<para>This template relies on a template named "is.acceptable.mediaobject"
+to determine if a given object is an acceptable graphic. The semantics
+of media objects is that the first acceptable graphic should be used.
+</para>
+
+<para>If no acceptable object is located, no index is returned.</para>
+</refdescription>
+
+<refparameter id="select.mediaobject.index-params">
+<variablelist>
+<varlistentry><term>olist</term>
+<listitem>
+<para>The node list of potential objects to examine.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>count</term>
+<listitem>
+<para>The position in the list currently being considered by the
+recursive process.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="select.mediaobject.index-returns">
+<para>Returns the position in the original list of the selected object.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="select.mediaobject.index">
+ <xsl:param name="olist"
+ select="imageobject|imageobjectco
+ |videoobject|audioobject|textobject"/>
+ <xsl:param name="count">1</xsl:param>
+
+ <xsl:choose>
+ <!-- Test for objects preferred by role -->
+ <xsl:when test="$use.role.for.mediaobject != 0
+ and $preferred.mediaobject.role != ''
+ and $olist[@role = $preferred.mediaobject.role]">
+
+ <!-- Get the first hit's position index -->
+ <xsl:for-each select="$olist">
+ <xsl:if test="@role = $preferred.mediaobject.role and
+ not(preceding-sibling::*[@role = $preferred.mediaobject.role])">
+ <xsl:value-of select="position()"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+
+ <xsl:when test="$use.role.for.mediaobject != 0
+ and $olist[@role = $stylesheet.result.type]">
+ <!-- Get the first hit's position index -->
+ <xsl:for-each select="$olist">
+ <xsl:if test="@role = $stylesheet.result.type and
+ not(preceding-sibling::*[@role = $stylesheet.result.type])">
+ <xsl:value-of select="position()"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <!-- Accept 'html' for $stylesheet.result.type = 'xhtml' -->
+ <xsl:when test="$use.role.for.mediaobject != 0
+ and $stylesheet.result.type = 'xhtml'
+ and $olist[@role = 'html']">
+ <!-- Get the first hit's position index -->
+ <xsl:for-each select="$olist">
+ <xsl:if test="@role = 'html' and
+ not(preceding-sibling::*[@role = 'html'])">
+ <xsl:value-of select="position()"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+
+ <!-- If no selection by role, and there is only one object, use it -->
+ <xsl:when test="count($olist) = 1 and $count = 1">
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- Otherwise select first acceptable object -->
+ <xsl:if test="$count &lt;= count($olist)">
+ <xsl:variable name="object" select="$olist[position()=$count]"/>
+
+ <xsl:variable name="useobject">
+ <xsl:choose>
+ <!-- The phrase is used only when contains TeX Math and output is FO -->
+ <xsl:when test="local-name($object)='textobject' and $object/phrase
+ and $object/@role='tex' and $stylesheet.result.type = 'fo'
+ and $tex.math.in.alt != ''">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- The phrase is never used -->
+ <xsl:when test="local-name($object)='textobject' and $object/phrase">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($object)='textobject'
+ and $object/ancestor::equation ">
+ <!-- The first textobject is not a reasonable fallback
+ for equation image -->
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- The first textobject is a reasonable fallback -->
+ <xsl:when test="local-name($object)='textobject'
+ and $object[not(@role) or @role!='tex']">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- don't use graphic when output is FO, TeX Math is used
+ and there is math in alt element -->
+ <xsl:when test="$object/ancestor::equation and
+ $object/ancestor::equation/alt[@role='tex']
+ and $stylesheet.result.type = 'fo'
+ and $tex.math.in.alt != ''">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- If there's only one object, use it -->
+ <xsl:when test="$count = 1 and count($olist) = 1">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- Otherwise, see if this one is a useable graphic -->
+ <xsl:otherwise>
+ <xsl:choose>
+ <!-- peek inside imageobjectco to simplify the test -->
+ <xsl:when test="local-name($object) = 'imageobjectco'">
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object/imageobject"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$useobject='1'">
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<doc:template name="is.acceptable.mediaobject" xmlns="">
+<refpurpose>Returns '1' if the specified media object is recognized</refpurpose>
+
+<refdescription id="is.acceptable.mediaobject-desc">
+<para>This template examines a media object and returns '1' if the
+object is recognized as a graphic.</para>
+</refdescription>
+
+<refparameter id="is.acceptable.mediaobject-params">
+<variablelist>
+<varlistentry><term>object</term>
+<listitem>
+<para>The media object to consider.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="is.acceptable.mediaobject-returns">
+<para>0 or 1</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="is.acceptable.mediaobject">
+ <xsl:param name="object"></xsl:param>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="ext">
+ <xsl:call-template name="filename-extension">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- there will only be one -->
+ <xsl:variable name="data" select="$object/videodata
+ |$object/imagedata
+ |$object/audiodata"/>
+
+ <xsl:variable name="format" select="$data/@format"/>
+
+ <xsl:variable name="graphic.format">
+ <xsl:if test="$format">
+ <xsl:call-template name="is.graphic.format">
+ <xsl:with-param name="format" select="$format"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="graphic.ext">
+ <xsl:if test="$ext">
+ <xsl:call-template name="is.graphic.extension">
+ <xsl:with-param name="ext" select="$ext"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$use.svg = 0 and $format = 'SVG'">0</xsl:when>
+ <xsl:when xmlns:svg="http://www.w3.org/2000/svg"
+ test="$use.svg != 0 and $object/svg:*">1</xsl:when>
+ <xsl:when test="$graphic.format = '1'">1</xsl:when>
+ <xsl:when test="$graphic.ext = '1'">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="mediaobject.filename">
+ <xsl:param name="object"></xsl:param>
+
+ <xsl:variable name="data" select="$object/videodata
+ |$object/imagedata
+ |$object/audiodata
+ |$object"/>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$data[@fileref]">
+ <xsl:apply-templates select="$data/@fileref"/>
+ </xsl:when>
+ <xsl:when test="$data[@entityref]">
+ <xsl:value-of select="unparsed-entity-uri($data/@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="real.ext">
+ <xsl:call-template name="filename-extension">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="ext">
+ <xsl:choose>
+ <xsl:when test="$real.ext != ''">
+ <xsl:value-of select="$real.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$graphic.default.extension"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="graphic.ext">
+ <xsl:call-template name="is.graphic.extension">
+ <xsl:with-param name="ext" select="$ext"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$real.ext = ''">
+ <xsl:choose>
+ <xsl:when test="$ext != ''">
+ <xsl:value-of select="$filename"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="$ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="not($graphic.ext)">
+ <xsl:choose>
+ <xsl:when test="$graphic.default.extension != ''">
+ <xsl:value-of select="$filename"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="$graphic.default.extension"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="check.id.unique" xmlns="">
+<refpurpose>Warn users about references to non-unique IDs</refpurpose>
+<refdescription id="check.id.unique-desc">
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.id.unique</function> prints
+a warning message to the user if either the ID does not exist or
+the ID is not unique.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="check.id.unique">
+ <xsl:param name="linkend"></xsl:param>
+ <xsl:if test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:if test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no ID for constraint linkend: </xsl:text>
+ <xsl:value-of select="$linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ <!--
+ <xsl:message>
+ <xsl:text>If the ID exists in your document, did your </xsl:text>
+ <xsl:text>XSLT Processor load the DTD?</xsl:text>
+ </xsl:message>
+ -->
+ </xsl:if>
+
+ <xsl:if test="count($targets)>1">
+ <xsl:message>
+ <xsl:text>Warning: multiple "IDs" for constraint linkend: </xsl:text>
+ <xsl:value-of select="$linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<doc:template name="check.idref.targets" xmlns="">
+<refpurpose>Warn users about incorrectly typed references</refpurpose>
+<refdescription id="check.idref.targets-desc">
+<para>If passed an ID in <varname>linkend</varname>,
+<function>check.idref.targets</function> makes sure that the element
+pointed to by the link is one of the elements listed in
+<varname>element-list</varname> and warns the user otherwise.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="check.idref.targets">
+ <xsl:param name="linkend"></xsl:param>
+ <xsl:param name="element-list"></xsl:param>
+ <xsl:if test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:if test="count($target) &gt; 0">
+ <xsl:if test="not(contains(concat(' ', $element-list, ' '), local-name($target)))">
+ <xsl:message>
+ <xsl:text>Error: linkend (</xsl:text>
+ <xsl:value-of select="$linkend"/>
+ <xsl:text>) points to "</xsl:text>
+ <xsl:value-of select="local-name($target)"/>
+ <xsl:text>" not (one of): </xsl:text>
+ <xsl:value-of select="$element-list"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- Procedure Step Numeration -->
+
+<xsl:param name="procedure.step.numeration.formats" select="'1aiAI'"/>
+
+<xsl:template name="procedure.step.numeration">
+ <xsl:param name="context" select="."/>
+ <xsl:variable name="format.length"
+ select="string-length($procedure.step.numeration.formats)"/>
+ <xsl:choose>
+ <xsl:when test="local-name($context) = 'substeps'">
+ <xsl:variable name="ssdepth"
+ select="count($context/ancestor::substeps)"/>
+ <xsl:variable name="sstype" select="($ssdepth mod $format.length)+2"/>
+ <xsl:choose>
+ <xsl:when test="$sstype &gt; $format.length">
+ <xsl:value-of select="substring($procedure.step.numeration.formats,1,1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring($procedure.step.numeration.formats,$sstype,1)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name($context) = 'step'">
+ <xsl:variable name="sdepth"
+ select="count($context/ancestor::substeps)"/>
+ <xsl:variable name="stype" select="($sdepth mod $format.length)+1"/>
+ <xsl:value-of select="substring($procedure.step.numeration.formats,$stype,1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected context in procedure.step.numeration: </xsl:text>
+ <xsl:value-of select="local-name($context)"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="step" mode="number">
+ <xsl:param name="rest" select="''"/>
+ <xsl:param name="recursive" select="1"/>
+ <xsl:variable name="format">
+ <xsl:call-template name="procedure.step.numeration"/>
+ </xsl:variable>
+ <xsl:variable name="num">
+ <xsl:number count="step" format="{$format}"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$recursive != 0 and ancestor::step">
+ <xsl:apply-templates select="ancestor::step[1]" mode="number">
+ <xsl:with-param name="rest" select="concat('.', $num, $rest)"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($num, $rest)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- OrderedList Numeration -->
+<xsl:template name="output-orderedlist-starting-number">
+ <xsl:param name="list"/>
+ <xsl:param name="pi-start"/>
+ <xsl:choose>
+ <xsl:when test="not($list/@continuation = 'continues')">
+ <xsl:choose>
+ <xsl:when test="@startingnumber">
+ <xsl:value-of select="@startingnumber"/>
+ </xsl:when>
+ <xsl:when test="$pi-start != ''">
+ <xsl:value-of select="$pi-start"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="prevlist"
+ select="$list/preceding::orderedlist[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($prevlist) = 0">2</xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="prevlength" select="count($prevlist/listitem)"/>
+ <xsl:variable name="prevstart">
+ <xsl:call-template name="orderedlist-starting-number">
+ <xsl:with-param name="list" select="$prevlist"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prevstart + $prevlength"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="orderedlist-item-number">
+ <!-- context node must be a listitem in an orderedlist -->
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="$node/@override">
+ <xsl:value-of select="$node/@override"/>
+ </xsl:when>
+ <xsl:when test="$node/preceding-sibling::listitem">
+ <xsl:variable name="pnum">
+ <xsl:call-template name="orderedlist-item-number">
+ <xsl:with-param name="node" select="$node/preceding-sibling::listitem[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$pnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="orderedlist-starting-number">
+ <xsl:with-param name="list" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="next.numeration">
+ <xsl:param name="numeration" select="'default'"/>
+ <xsl:choose>
+ <!-- Change this list if you want to change the order of numerations -->
+ <xsl:when test="$numeration = 'arabic'">loweralpha</xsl:when>
+ <xsl:when test="$numeration = 'loweralpha'">lowerroman</xsl:when>
+ <xsl:when test="$numeration = 'lowerroman'">upperalpha</xsl:when>
+ <xsl:when test="$numeration = 'upperalpha'">upperroman</xsl:when>
+ <xsl:when test="$numeration = 'upperroman'">arabic</xsl:when>
+ <xsl:otherwise>arabic</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="list.numeration">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$node/@numeration">
+ <xsl:value-of select="$node/@numeration"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$node/ancestor::orderedlist">
+ <xsl:call-template name="next.numeration">
+ <xsl:with-param name="numeration">
+ <xsl:call-template name="list.numeration">
+ <xsl:with-param name="node" select="$node/ancestor::orderedlist[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="next.numeration"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- ItemizedList "Numeration" -->
+
+<xsl:template name="next.itemsymbol">
+ <xsl:param name="itemsymbol" select="'default'"/>
+ <xsl:choose>
+ <!-- Change this list if you want to change the order of symbols -->
+ <xsl:when test="$itemsymbol = 'disc'">circle</xsl:when>
+ <xsl:when test="$itemsymbol = 'circle'">square</xsl:when>
+ <xsl:otherwise>disc</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="list.itemsymbol">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="@override">
+ <xsl:value-of select="@override"/>
+ </xsl:when>
+ <xsl:when test="$node/@mark">
+ <xsl:value-of select="$node/@mark"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$node/ancestor::itemizedlist">
+ <xsl:call-template name="next.itemsymbol">
+ <xsl:with-param name="itemsymbol">
+ <xsl:call-template name="list.itemsymbol">
+ <xsl:with-param name="node" select="$node/ancestor::itemizedlist[1]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="next.itemsymbol"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<doc:template name="copyright.years" xmlns="">
+<refpurpose>Print a set of years with collapsed ranges</refpurpose>
+
+<refdescription id="copyright.years-desc">
+<para>This template prints a list of year elements with consecutive
+years printed as a range. In other words:</para>
+
+<screen><![CDATA[<year>1992</year>
+<year>1993</year>
+<year>1994</year>]]></screen>
+
+<para>is printed <quote>1992-1994</quote>, whereas:</para>
+
+<screen><![CDATA[<year>1992</year>
+<year>1994</year>]]></screen>
+
+<para>is printed <quote>1992, 1994</quote>.</para>
+
+<para>This template assumes that all the year elements contain only
+decimal year numbers, that the elements are sorted in increasing
+numerical order, that there are no duplicates, and that all the years
+are expressed in full <quote>century+year</quote>
+(<quote>1999</quote> not <quote>99</quote>) notation.</para>
+</refdescription>
+
+<refparameter id="copyright.years-params">
+<variablelist>
+<varlistentry><term>years</term>
+<listitem>
+<para>The initial set of year elements.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>print.ranges</term>
+<listitem>
+<para>If non-zero, multi-year ranges are collapsed. If zero, all years
+are printed discretely.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>single.year.ranges</term>
+<listitem>
+<para>If non-zero, two consecutive years will be printed as a range,
+otherwise, they will be printed discretely. In other words, a single
+year range is <quote>1991-1992</quote> but discretely it's
+<quote>1991, 1992</quote>.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="copyright.years-returns">
+<para>This template returns the formatted list of years.</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="copyright.years">
+ <xsl:param name="years"/>
+ <xsl:param name="print.ranges" select="1"/>
+ <xsl:param name="single.year.ranges" select="0"/>
+ <xsl:param name="firstyear" select="0"/>
+ <xsl:param name="nextyear" select="0"/>
+
+ <!--
+ <xsl:message terminate="no">
+ <xsl:text>CY: </xsl:text>
+ <xsl:value-of select="count($years)"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$firstyear"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$nextyear"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$print.ranges"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$single.year.ranges"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="$years[1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:message>
+ -->
+
+ <xsl:choose>
+ <xsl:when test="$print.ranges = 0 and count($years) &gt; 0">
+ <xsl:choose>
+ <xsl:when test="count($years) = 1">
+ <xsl:apply-templates select="$years[1]" mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$years[1]" mode="titlepage.mode"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years"
+ select="$years[position() &gt; 1]"/>
+ <xsl:with-param name="print.ranges" select="$print.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$single.year.ranges"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="count($years) = 0">
+ <xsl:variable name="lastyear" select="$nextyear - 1"/>
+ <xsl:choose>
+ <xsl:when test="$firstyear = 0">
+ <!-- there weren't any years at all -->
+ </xsl:when>
+ <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>
+
+<!-- ====================================================================== -->
+
+<doc:template name="find.path.params" xmlns="">
+<refpurpose>Search in a table for the "best" match for the node</refpurpose>
+
+<refdescription id="find.path.params-desc">
+<para>This template searches in a table for the value that most-closely
+(in the typical best-match sense of XSLT) matches the current (element)
+node location.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="find.path.params">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="table" select="''"/>
+ <xsl:param name="location">
+ <xsl:call-template name="xpath.location">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:param>
+
+ <xsl:variable name="value">
+ <xsl:call-template name="lookup.key">
+ <xsl:with-param name="key" select="$location"/>
+ <xsl:with-param name="table" select="$table"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$value != ''">
+ <xsl:value-of select="$value"/>
+ </xsl:when>
+ <xsl:when test="contains($location, '/')">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="table" select="$table"/>
+ <xsl:with-param name="location" select="substring-after($location, '/')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="relative-uri">
+ <xsl:param name="filename" select="."/>
+ <xsl:param name="destdir" select="''"/>
+
+ <xsl:variable name="srcurl">
+ <xsl:call-template name="strippath">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="xml.base.dirs">
+ <xsl:with-param name="base.elem"
+ select="$filename/ancestor-or-self::*
+ [@xml:base != ''][1]"/>
+ </xsl:call-template>
+ <xsl:value-of select="$filename"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="srcurl.trimmed">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$srcurl"/>
+ <xsl:with-param name="uriB" select="$destdir"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="destdir.trimmed">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$srcurl"/>
+ <xsl:with-param name="uriB" select="$destdir"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$destdir.trimmed"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$srcurl.trimmed"/>
+
+</xsl:template>
+
+<!-- ===================================== -->
+
+<xsl:template name="xml.base.dirs">
+ <xsl:param name="base.elem" select="NONODE"/>
+
+ <!-- Recursively resolve xml:base attributes, up to a
+ full path with : in uri -->
+ <xsl:if test="$base.elem/ancestor::*[@xml:base != ''] and
+ not(contains($base.elem/@xml:base, ':'))">
+ <xsl:call-template name="xml.base.dirs">
+ <xsl:with-param name="base.elem"
+ select="$base.elem/ancestor::*[@xml:base != ''][1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="getdir">
+ <xsl:with-param name="filename" select="$base.elem/@xml:base"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<!-- ===================================== -->
+
+<xsl:template name="strippath">
+ <xsl:param name="filename" select="''"/>
+ <xsl:choose>
+ <!-- Leading .. are not eliminated -->
+ <xsl:when test="starts-with($filename, '../')">
+ <xsl:value-of select="'../'"/>
+ <xsl:call-template name="strippath">
+ <xsl:with-param name="filename" select="substring-after($filename, '../')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($filename, '/../')">
+ <xsl:call-template name="strippath">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="getdir">
+ <xsl:with-param name="filename" select="substring-before($filename, '/../')"/>
+ </xsl:call-template>
+ <xsl:value-of select="substring-after($filename, '/../')"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<xsl:template name="getdir">
+ <xsl:param name="filename" select="''"/>
+ <xsl:if test="contains($filename, '/')">
+ <xsl:value-of select="substring-before($filename, '/')"/>
+ <xsl:text>/</xsl:text>
+ <xsl:call-template name="getdir">
+ <xsl:with-param name="filename" select="substring-after($filename, '/')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<doc:template name="string.upper" xmlns="">
+<refpurpose>Converts a string to all uppercase letters</refpurpose>
+
+<refdescription id="string.upper-desc">
+<para>Given a string, this template does a language-aware conversion
+of that string to all uppercase letters, based on the values of the
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>lowercase.alpha</literal> and
+<literal>uppercase.alpha</literal>. All other characters are left
+unchanged.</para>
+</refdescription>
+
+<refparameter id="string.upper-params">
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+<para>The string to convert to uppercase.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+</doc:template>
+<xsl:template name="string.upper">
+ <xsl:param name="string" select="''"/>
+ <xsl:variable name="lowercase.alpha">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'lowercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="uppercase.alpha">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'uppercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="translate($string,$lowercase.alpha,$uppercase.alpha)"/>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<doc:template name="string.lower" xmlns="">
+<refpurpose>Converts a string to all lowercase letters</refpurpose>
+
+<refdescription id="string.lower-desc">
+<para>Given a string, this template does a language-aware conversion
+of that string to all lowercase letters, based on the values of the
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal> gentext keys for the current
+locale. It affects only those characters found in the values of
+<literal>uppercase.alpha</literal> and
+<literal>lowercase.alpha</literal>. All other characters are left
+unchanged.</para>
+</refdescription>
+
+<refparameter id="string.lower-params">
+<variablelist>
+<varlistentry><term>string</term>
+<listitem>
+<para>The string to convert to lowercase.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+</doc:template>
+<xsl:template name="string.lower">
+ <xsl:param name="string" select="''"/>
+ <xsl:variable name="uppercase.alpha">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'uppercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="lowercase.alpha">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'lowercase.alpha'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="translate($string,$uppercase.alpha,$lowercase.alpha)"/>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<doc:template name="select.choice.separator" xmlns="">
+ <refpurpose>Returns localized choice separator</refpurpose>
+ <refdescription id="select.choice.separator-desc">
+ <para>This template enables auto-generation of an appropriate
+ localized "choice" separator (for example, "and" or "or") before
+ the final item in an inline list (though it could also be useful
+ for generating choice separators for non-inline lists).</para>
+ <para>It currently works by evaluating a processing instruction
+ (PI) of the form &lt;?dbchoice&#xa0;choice="foo"?> :
+ <itemizedlist>
+ <listitem>
+ <simpara>if the value of the <tag>choice</tag>
+ pseudo-attribute is "and" or "or", returns a localized "and"
+ or "or"</simpara>
+ </listitem>
+ <listitem>
+ <simpara>otherwise returns the literal value of the
+ <tag>choice</tag> pseudo-attribute</simpara>
+ </listitem>
+ </itemizedlist>
+ The latter is provided only as a temporary workaround because the
+ locale files do not currently have translations for the word
+ <wordasword>or</wordasword>. So if you want to generate a a
+ logical "or" separator in French (for example), you currently need
+ to do this:
+ <literallayout>&lt;?dbchoice choice="ou"?></literallayout>
+ </para>
+ <warning>
+ <para>The <tag>dbchoice</tag> processing instruction is
+ an unfortunate hack; support for it may disappear in the future
+ (particularly if and when a more appropriate means for marking
+ up "choice" lists becomes available in DocBook).</para>
+ </warning>
+ </refdescription>
+</doc:template>
+<xsl:template name="select.choice.separator">
+ <xsl:variable name="choice">
+ <xsl:call-template name="pi.dbchoice_choice"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- if value of $choice is "and" or "or", translate to equivalent in -->
+ <!-- current locale -->
+ <xsl:when test="$choice = 'and' or $choice = 'or'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$choice"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- otherwise, just output value of $choice, whatever it is -->
+ <xsl:otherwise>
+ <xsl:value-of select="$choice"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ===================================== -->
+
+<doc:template name="evaluate.info.profile" xmlns="">
+ <refpurpose>Evaluates an info profile</refpurpose>
+ <refdescription id="evaluate.info.profile-desc">
+ <para>This template evaluates an "info profile" matching the XPath
+ expression given by the <parameter>profile</parameter>
+ parameter. It relies on the XSLT <function>evaluate()</function>
+ extension function.</para>
+
+ <para>The value of the <parameter>profile</parameter> parameter
+ can include the literal string <literal>$info</literal>. If found
+ in the value of the <parameter>profile</parameter> parameter, the
+ literal string <literal>$info</literal> string is replaced with
+ the value of the <parameter>info</parameter> parameter, which
+ should be a set of <replaceable>*info</replaceable> nodes; the
+ expression is then evaluated using the XSLT
+ <function>evaluate()</function> extension function.</para>
+ </refdescription>
+ <refparameter id="evaluate.info.profile-params">
+ <variablelist>
+ <varlistentry>
+ <term>profile</term>
+ <listitem>
+ <para>A string representing an XPath expression </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of *info nodes</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn id="evaluate.info.profile-returns">
+ <para>Returns a node (the result of evaluating the
+ <parameter>profile</parameter> parameter)</para>
+ </refreturn>
+</doc:template>
+ <xsl:template name="evaluate.info.profile">
+ <xsl:param name="profile"/>
+ <xsl:param name="info"/>
+ <xsl:choose>
+ <!-- * xsltproc and Xalan both support dyn:evaluate() -->
+ <xsl:when test="function-available('dyn:evaluate')">
+ <xsl:apply-templates
+ select="dyn:evaluate($profile)" mode="get.refentry.metadata"/>
+ </xsl:when>
+ <!-- * Saxon has its own evaluate() & doesn't support dyn:evaluate() -->
+ <xsl:when test="function-available('saxon:evaluate')">
+ <xsl:apply-templates
+ select="saxon:evaluate($profile)" mode="get.refentry.metadata"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+Error: The "info profiling" mechanism currently requires an XSLT
+engine that supports the evaluate() XSLT extension function. Your XSLT
+engine does not support it.
+</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/cs.xml b/docs/xsl-generic/common/cs.xml
new file mode 100644
index 00000000..b00f83fd
--- /dev/null
+++ b/docs/xsl-generic/common/cs.xml
@@ -0,0 +1,694 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="cs" english-language-name="Czech">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/cs.xml -->
+<!-- * -->
+<!-- * E-mail the edited cs.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrakt"/>
+<l:gentext key="abstract" text="Abstrakt"/>
+<l:gentext key="Answer" text="Odpověď:"/>
+<l:gentext key="answer" text="Odpověď:"/>
+<l:gentext key="Appendix" text="Příloha"/>
+<l:gentext key="appendix" text="Příloha"/>
+<l:gentext key="Article" text="Článek"/>
+<l:gentext key="article" text="Článek"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografie"/>
+<l:gentext key="bibliography" text="Bibliografie"/>
+<l:gentext key="Book" text="Kniha"/>
+<l:gentext key="book" text="Kniha"/>
+<l:gentext key="CAUTION" text="Výstraha"/>
+<l:gentext key="Caution" text="Výstraha"/>
+<l:gentext key="caution" text="Výstraha"/>
+<l:gentext key="Chapter" text="Kapitola"/>
+<l:gentext key="chapter" text="Kapitola"/>
+<l:gentext key="Colophon" text="Tiráž"/>
+<l:gentext key="colophon" text="Tiráž"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Věnování"/>
+<l:gentext key="dedication" text="Věnování"/>
+<l:gentext key="Edition" text="Vydání"/>
+<l:gentext key="edition" text="Vydání"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Rovnice"/>
+<l:gentext key="equation" text="Rovnice"/>
+<l:gentext key="Example" text="Příklad"/>
+<l:gentext key="example" text="Příklad"/>
+<l:gentext key="Figure" text="Obrázek"/>
+<l:gentext key="figure" text="Obrázek"/>
+<l:gentext key="Glossary" text="Slovník"/>
+<l:gentext key="glossary" text="Slovník"/>
+<l:gentext key="GlossSee" text="Viz"/>
+<l:gentext key="glosssee" text="Viz"/>
+<l:gentext key="GlossSeeAlso" text="Viz též"/>
+<l:gentext key="glossseealso" text="Viz též"/>
+<l:gentext key="IMPORTANT" text="Důležité"/>
+<l:gentext key="important" text="Důležité"/>
+<l:gentext key="Important" text="Důležité"/>
+<l:gentext key="Index" text="Rejstřík"/>
+<l:gentext key="index" text="Rejstřík"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Právní doložka"/>
+<l:gentext key="legalnotice" text="Právní doložka"/>
+<l:gentext key="MsgAud" text="Publikum"/>
+<l:gentext key="msgaud" text="Publikum"/>
+<l:gentext key="MsgLevel" text="Úroveň"/>
+<l:gentext key="msglevel" text="Úroveň"/>
+<l:gentext key="MsgOrig" text="Původ"/>
+<l:gentext key="msgorig" text="Původ"/>
+<l:gentext key="NOTE" text="Poznámka"/>
+<l:gentext key="Note" text="Poznámka"/>
+<l:gentext key="note" text="Poznámka"/>
+<l:gentext key="Part" text="Část"/>
+<l:gentext key="part" text="Část"/>
+<l:gentext key="Preface" text="Předmluva"/>
+<l:gentext key="preface" text="Předmluva"/>
+<l:gentext key="Procedure" text="Postup"/>
+<l:gentext key="procedure" text="Postup"/>
+<l:gentext key="ProductionSet" text="Produkce"/>
+<l:gentext key="PubDate" text="Datum vydání"/>
+<l:gentext key="pubdate" text="Datum vydání"/>
+<l:gentext key="Published" text="Vydáno"/>
+<l:gentext key="published" text="Vydáno"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Otázky a odpovědi"/>
+<l:gentext key="qandadiv" text="Otázky a odpovědi"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Otázka:"/>
+<l:gentext key="question" text="Otá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="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Jméno"/>
+<l:gentext key="refname" text="Jméno"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Přehled"/>
+<l:gentext key="refsynopsisdiv" text="Přehled"/>
+<l:gentext key="RevHistory" text="Přehled revizí"/>
+<l:gentext key="revhistory" text="Přehled revizí"/>
+<l:gentext key="revision" text="Revize"/>
+<l:gentext key="Revision" text="Revize"/>
+<l:gentext key="sect1" text="Oddíl"/>
+<l:gentext key="sect2" text="Oddíl"/>
+<l:gentext key="sect3" text="Oddíl"/>
+<l:gentext key="sect4" text="Oddíl"/>
+<l:gentext key="sect5" text="Oddíl"/>
+<l:gentext key="section" text="Oddíl"/>
+<l:gentext key="Section" text="Oddíl"/>
+<l:gentext key="see" text="Viz"/>
+<l:gentext key="See" text="Viz"/>
+<l:gentext key="seealso" text="Viz též"/>
+<l:gentext key="Seealso" text="Viz též"/>
+<l:gentext key="SeeAlso" text="Viz též"/>
+<l:gentext key="set" text="Sada"/>
+<l:gentext key="Set" text="Sada"/>
+<l:gentext key="setindex" text="Rejstřík sady"/>
+<l:gentext key="SetIndex" text="Rejstřík sady"/>
+<l:gentext key="Sidebar" text="Marginálie"/>
+<l:gentext key="sidebar" text="Marginálie"/>
+<l:gentext key="step" text="krok"/>
+<l:gentext key="Step" text="Krok"/>
+<l:gentext key="table" text="Tabulka"/>
+<l:gentext key="Table" text="Tabulka"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="Tip"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Varování"/>
+<l:gentext key="warning" text="Varování"/>
+<l:gentext key="WARNING" text="Varování"/>
+<l:gentext key="and" text="a"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Vydáno"/>
+<l:gentext key="edited" text="Vydáno"/>
+<l:gentext key="Editedby" text="Sestavil"/>
+<l:gentext key="editedby" text="Sestavil"/>
+<l:gentext key="in" text="v"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="neexistující prvek"/>
+<l:gentext key="notes" text="Poznámky"/>
+<l:gentext key="Notes" text="Poznámky"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="Str."/>
+<l:gentext key="Revisedby" text="Revidoval: "/>
+<l:gentext key="revisedby" text="Revidoval: "/>
+<l:gentext key="TableNotes" text="Poznámky"/>
+<l:gentext key="tablenotes" text="Poznámky"/>
+<l:gentext key="TableofContents" text="Obsah"/>
+<l:gentext key="tableofcontents" text="Obsah"/>
+<l:gentext key="unexpectedelementname" text="Neočekávané jméno prvku"/>
+<l:gentext key="unsupported" text="nepodporovaný"/>
+<l:gentext key="xrefto" text="xref k"/>
+<l:gentext key="Authors" text="Autoři"/>
+<l:gentext key="copyeditor" text="Korektor"/>
+<l:gentext key="graphicdesigner" text="Grafický designér"/>
+<l:gentext key="productioneditor" text="Produkce"/>
+<l:gentext key="technicaleditor" text="Technický editor"/>
+<l:gentext key="translator" text="Překladatel"/>
+<l:gentext key="listofequations" text="Seznam rovnic"/>
+<l:gentext key="ListofEquations" text="Seznam rovnic"/>
+<l:gentext key="ListofExamples" text="Seznam příkladů"/>
+<l:gentext key="listofexamples" text="Seznam příkladů"/>
+<l:gentext key="ListofFigures" text="Seznam obrázků"/>
+<l:gentext key="listoffigures" text="Seznam obrázků"/>
+<l:gentext key="ListofProcedures" text="Seznam postupů"/>
+<l:gentext key="listofprocedures" text="Seznam postupů"/>
+<l:gentext key="listoftables" text="Seznam tabulek"/>
+<l:gentext key="ListofTables" text="Seznam tabulek"/>
+<l:gentext key="ListofUnknown" text="Seznam neznámého"/>
+<l:gentext key="listofunknown" text="Seznam neznámého"/>
+<l:gentext key="nav-home" text="Domů"/>
+<l:gentext key="nav-next" text="Další"/>
+<l:gentext key="nav-next-sibling" text="Rychle dopředu"/>
+<l:gentext key="nav-prev" text="Předcházející"/>
+<l:gentext key="nav-prev-sibling" text="Rychle zpět"/>
+<l:gentext key="nav-up" text="Nahoru"/>
+<l:gentext key="nav-toc" text="Obsah"/>
+<l:gentext key="Draft" text="Návrh"/>
+<l:gentext key="above" text="nad"/>
+<l:gentext key="below" text="pod"/>
+<l:gentext key="sectioncalled" text="oddíl nazvaný"/>
+<l:gentext key="index symbols" text="Symboly"/>
+<l:gentext key="lowercase.alpha" text="aábcčdďeéěfghiíjklmnňoópqrřsštťuúůvwxyýzž"/>
+<l:gentext key="uppercase.alpha" text="AÁBCČDĎEÉĚFGHIÍJKLMNŇOÓPQRŘSŠTŤUÚŮVWXYÝZŽ"/>
+<l:gentext key="normalize.sort.input" text="aábcčdďeéěfghiíjklmnňoópqrřsštťuúůvwxyýzž"/>
+<l:gentext key="normalize.sort.output" text="AÁBCČDĎEÉĚFGHIÍJKLMNŇOÓPQRŘSŠTŤUÚŮVWXYÝZŽ"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‚"/>
+<l:dingbat key="nestedendquote" text="‘"/>
+<l:dingbat key="singlestartquote" text="‚"/>
+<l:dingbat key="singleendquote" text="‘"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Příloha %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitola %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Rovnice %n. %t"/>
+<l:template name="example" text="Příklad %n. %t"/>
+<l:template name="figure" text="Obrázek %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Část %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postup %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkce %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabulka %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Příloha %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kapitola %n. %t"/>
+<l:template name="part" text="Část %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text="v %o"/>
+<l:template name="olink.page.citation" text=" (strana %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(strana %p)"/>
+<l:template name="docname" text=" v %o"/>
+<l:template name="docnamelong" text=" v dokumentu nazvaném %o"/>
+<l:template name="pageabbrev" text="(str. %p)"/>
+<l:template name="Page" text="Strana %p"/>
+<l:template name="bridgehead" text="„%t“"/>
+<l:template name="refsection" text="„%t“"/>
+<l:template name="refsect1" text="„%t“"/>
+<l:template name="refsect2" text="„%t“"/>
+<l:template name="refsect3" text="„%t“"/>
+<l:template name="sect1" text="„%t“"/>
+<l:template name="sect2" text="„%t“"/>
+<l:template name="sect3" text="„%t“"/>
+<l:template name="sect4" text="„%t“"/>
+<l:template name="sect5" text="„%t“"/>
+<l:template name="section" text="„%t“"/>
+<l:template name="simplesect" text="„%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="%n"/>
+<l:template name="appendix" text="%n"/>
+<l:template name="bridgehead" text="%n"/>
+<l:template name="chapter" text="%n"/>
+<l:template name="equation" text="%n"/>
+<l:template name="example" text="%n"/>
+<l:template name="figure" text="%n"/>
+<l:template name="part" text="%n"/>
+<l:template name="procedure" text="%n"/>
+<l:template name="productionset" text="%n"/>
+<l:template name="qandadiv" text="%n"/>
+<l:template name="qandaentry" text="%n"/>
+<l:template name="question" text="%n"/>
+<l:template name="sect1" text="%n"/>
+<l:template name="sect2" text="%n"/>
+<l:template name="sect3" text="%n"/>
+<l:template name="sect4" text="%n"/>
+<l:template name="sect5" text="%n"/>
+<l:template name="section" text="%n"/>
+<l:template name="table" text="%n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="%n – „%t“"/>
+<l:template name="bridgehead" text="%n – „%t“"/>
+<l:template name="chapter" text="%n – „%t“"/>
+<l:template name="equation" text="%n – „%t“"/>
+<l:template name="example" text="%n – „%t“"/>
+<l:template name="figure" text="%n – „%t“"/>
+<l:template name="part" text="%n – „%t“"/>
+<l:template name="procedure" text="%n – „%t“"/>
+<l:template name="productionset" text="%n – „%t“"/>
+<l:template name="qandadiv" text="%n – „%t“"/>
+<l:template name="refsect1" text="„%t“"/>
+<l:template name="refsect2" text="„%t“"/>
+<l:template name="refsect3" text="„%t“"/>
+<l:template name="refsection" text="„%t“"/>
+<l:template name="sect1" text="%n – „%t“"/>
+<l:template name="sect2" text="%n – „%t“"/>
+<l:template name="sect3" text="%n – „%t“"/>
+<l:template name="sect4" text="%n – „%t“"/>
+<l:template name="sect5" text="%n – „%t“"/>
+<l:template name="section" text="%n – „%t“"/>
+<l:template name="simplesect" text="%n – „%t“"/>
+<l:template name="table" text="%n – „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" a "/>
+<l:template name="seplast" text=" a "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Viz %t"/>
+<l:template name="seealso" text="Viz též %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publikum: "/>
+<l:template name="MsgLevel" text="Úroveň: "/>
+<l:template name="MsgOrig" text="Původ: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d. B Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ledna"/>
+<l:template name="February" text="února"/>
+<l:template name="March" text="března"/>
+<l:template name="April" text="dubna"/>
+<l:template name="May" text="května"/>
+<l:template name="June" text="června"/>
+<l:template name="July" text="července"/>
+<l:template name="August" text="srpna"/>
+<l:template name="September" text="září"/>
+<l:template name="October" text="října"/>
+<l:template name="November" text="listopadu"/>
+<l:template name="December" text="prosince"/>
+<l:template name="Monday" text="pondělí"/>
+<l:template name="Tuesday" text="úterý"/>
+<l:template name="Wednesday" text="středa"/>
+<l:template name="Thursday" text="čtvrtek"/>
+<l:template name="Friday" text="pátek"/>
+<l:template name="Saturday" text="sobota"/>
+<l:template name="Sunday" text="neděle"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="led"/>
+<l:template name="Feb" text="úno"/>
+<l:template name="Mar" text="bře"/>
+<l:template name="Apr" text="dub"/>
+<l:template name="May" text="kvě"/>
+<l:template name="Jun" text="čer"/>
+<l:template name="Jul" text="čnc"/>
+<l:template name="Aug" text="srp"/>
+<l:template name="Sep" text="zář"/>
+<l:template name="Oct" text="řij"/>
+<l:template name="Nov" text="lis"/>
+<l:template name="Dec" text="pro"/>
+<l:template name="Mon" text="po"/>
+<l:template name="Tue" text="út"/>
+<l:template name="Wed" text="st"/>
+<l:template name="Thu" text="čt"/>
+<l:template name="Fri" text="pá"/>
+<l:template name="Sat" text="so"/>
+<l:template name="Sun" text="ne"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0405 Czech"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cit. "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Dostupné "/>
+<l:template name="acctoo" text="Dostupné také "/>
+<l:template name="onwww" text="na World Wide Web"/>
+<l:template name="oninet" text="na Internetu"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symboly</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">Á</l:l>
+<l:l i="1">á</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">Č</l:l>
+<l:l i="4">č</l:l>
+<l:l i="5">D</l:l>
+<l:l i="5">d</l:l>
+<l:l i="5">Ď</l:l>
+<l:l i="5">ď</l:l>
+<l:l i="7">E</l:l>
+<l:l i="7">e</l:l>
+<l:l i="7">É</l:l>
+<l:l i="7">é</l:l>
+<l:l i="7">Ě</l:l>
+<l:l i="7">ě</l:l>
+<l:l i="7">Ë</l:l>
+<l:l i="7">ë</l:l>
+<l:l i="8">F</l:l>
+<l:l i="8">f</l:l>
+<l:l i="9">G</l:l>
+<l:l i="9">g</l:l>
+<l:l i="10">H</l:l>
+<l:l i="10">h</l:l>
+<l:l i="11">Ch</l:l>
+<l:l i="11">ch</l:l>
+<l:l i="11">cH</l:l>
+<l:l i="11">CH</l:l>
+<l:l i="12">I</l:l>
+<l:l i="12">i</l:l>
+<l:l i="12">Í</l:l>
+<l:l i="12">í</l:l>
+<l:l i="13">J</l:l>
+<l:l i="13">j</l:l>
+<l:l i="14">K</l:l>
+<l:l i="14">k</l:l>
+<l:l i="15">L</l:l>
+<l:l i="15">l</l:l>
+<l:l i="16">M</l:l>
+<l:l i="16">m</l:l>
+<l:l i="17">N</l:l>
+<l:l i="17">n</l:l>
+<l:l i="17">Ň</l:l>
+<l:l i="17">ň</l:l>
+<l:l i="19">O</l:l>
+<l:l i="19">o</l:l>
+<l:l i="19">Ó</l:l>
+<l:l i="19">ó</l:l>
+<l:l i="19">Ö</l:l>
+<l:l i="19">ö</l:l>
+<l:l i="20">P</l:l>
+<l:l i="20">p</l:l>
+<l:l i="21">Q</l:l>
+<l:l i="21">q</l:l>
+<l:l i="22">R</l:l>
+<l:l i="22">r</l:l>
+<l:l i="23">Ř</l:l>
+<l:l i="23">ř</l:l>
+<l:l i="24">S</l:l>
+<l:l i="24">s</l:l>
+<l:l i="25">Š</l:l>
+<l:l i="25">š</l:l>
+<l:l i="26">T</l:l>
+<l:l i="26">t</l:l>
+<l:l i="26">Ť</l:l>
+<l:l i="26">ť</l:l>
+<l:l i="28">U</l:l>
+<l:l i="28">u</l:l>
+<l:l i="28">Ú</l:l>
+<l:l i="28">ú</l:l>
+<l:l i="28">Ů</l:l>
+<l:l i="28">ů</l:l>
+<l:l i="28">Ü</l:l>
+<l:l i="28">ü</l:l>
+<l:l i="29">V</l:l>
+<l:l i="29">v</l:l>
+<l:l i="30">W</l:l>
+<l:l i="30">w</l:l>
+<l:l i="31">X</l:l>
+<l:l i="31">x</l:l>
+<l:l i="32">Y</l:l>
+<l:l i="32">y</l:l>
+<l:l i="32">Ý</l:l>
+<l:l i="32">ý</l:l>
+<l:l i="33">Z</l:l>
+<l:l i="33">z</l:l>
+<l:l i="34">Ž</l:l>
+<l:l i="34">ž</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/cy.xml b/docs/xsl-generic/common/cy.xml
new file mode 100644
index 00000000..0790f5a2
--- /dev/null
+++ b/docs/xsl-generic/common/cy.xml
@@ -0,0 +1,1239 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="cy" english-language-name="Welsh">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/cy.xml -->
+<!-- * -->
+<!-- * E-mail the edited cy.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Crynodeb"/>
+<l:gentext key="abstract" text="Crynodeb"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Atodiad"/>
+<l:gentext key="appendix" text="Atodiad"/>
+<l:gentext key="Article" text="Erthygl"/>
+<l:gentext key="article" text="Erthygl"/>
+<l:gentext key="Author" text="Awdur"/>
+<l:gentext key="Bibliography" text="Llyfryddiaeth"/>
+<l:gentext key="bibliography" text="Llyfryddiaeth"/>
+<l:gentext key="Book" text="Llyfr"/>
+<l:gentext key="book" text="Llyfr"/>
+<l:gentext key="CAUTION" text="GOFAL"/>
+<l:gentext key="Caution" text="Gofal"/>
+<l:gentext key="caution" text="Gofal"/>
+<l:gentext key="Chapter" text="Pennod"/>
+<l:gentext key="chapter" text="Pennod"/>
+<l:gentext key="Colophon" text="Coloffon"/>
+<l:gentext key="colophon" text="Coloffon"/>
+<l:gentext key="Copyright" text="Hawlfraint"/>
+<l:gentext key="copyright" text="Hawlfraint"/>
+<l:gentext key="Dedication" text="Cyflwyniad"/>
+<l:gentext key="dedication" text="Cyflwyniad"/>
+<l:gentext key="Edition" text="Argraffiad"/>
+<l:gentext key="edition" text="Argraffiad"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Hafaliad"/>
+<l:gentext key="equation" text="Hafaliad"/>
+<l:gentext key="Example" text="Enghraifft"/>
+<l:gentext key="example" text="Enghraifft"/>
+<l:gentext key="Figure" text="Ffigur"/>
+<l:gentext key="figure" text="Ffigur"/>
+<l:gentext key="Glossary" text="Geirfa"/>
+<l:gentext key="glossary" text="Geirfa"/>
+<l:gentext key="GlossSee" text="Gweler"/>
+<l:gentext key="glosssee" text="Gweler"/>
+<l:gentext key="GlossSeeAlso" text="Gweler Hefyd"/>
+<l:gentext key="glossseealso" text="Gweler Hefyd"/>
+<l:gentext key="IMPORTANT" text="PWYSIG"/>
+<l:gentext key="important" text="Pwysig"/>
+<l:gentext key="Important" text="Pwysig"/>
+<l:gentext key="Index" text="Mynegai"/>
+<l:gentext key="index" text="Mynegai"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Rhybudd Cyfreithiol"/>
+<l:gentext key="legalnotice" text="Rhybudd Cyfreithiol"/>
+<l:gentext key="MsgAud" text="Cynulleidfa"/>
+<l:gentext key="msgaud" text="Cynulleidfa"/>
+<l:gentext key="MsgLevel" text="Lefel"/>
+<l:gentext key="msglevel" text="Lefel"/>
+<l:gentext key="MsgOrig" text="Tarddiad"/>
+<l:gentext key="msgorig" text="Tarddiad"/>
+<l:gentext key="NOTE" text="NODYN"/>
+<l:gentext key="Note" text="Nodyn"/>
+<l:gentext key="note" text="Nodyn"/>
+<l:gentext key="Part" text="Rhan"/>
+<l:gentext key="part" text="Rhan"/>
+<l:gentext key="Preface" text="Rhagair"/>
+<l:gentext key="preface" text="Rhagair"/>
+<l:gentext key="Procedure" text="Trefn"/>
+<l:gentext key="procedure" text="Trefn"/>
+<l:gentext key="ProductionSet" text="Cynhyrchiad"/>
+<l:gentext key="PubDate" text="Dyddiad Cyhoeddi"/>
+<l:gentext key="pubdate" text="Dyddiad Cyhoeddi"/>
+<l:gentext key="Published" text="Cyhoeddwyd"/>
+<l:gentext key="published" text="Cyhoeddwyd"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="C &amp; A"/>
+<l:gentext key="qandadiv" text="C &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="C:"/>
+<l:gentext key="question" text="C:"/>
+<l:gentext key="RefEntry" text="Cyfeirnod"/>
+<l:gentext key="refentry" text="Cyfeirnod"/>
+<l:gentext key="Reference" text="Cyfeiriad"/>
+<l:gentext key="reference" text="Cyfeiriad"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Enw"/>
+<l:gentext key="refname" text="Enw"/>
+<l:gentext key="RefSection" text="Adran Gyfeiriad"/>
+<l:gentext key="refsection" text="Adran Gyfeiriad"/>
+<l:gentext key="RefSynopsisDiv" text="Crynodeb"/>
+<l:gentext key="refsynopsisdiv" text="Crynodeb"/>
+<l:gentext key="RevHistory" text="Hanes Adolygu"/>
+<l:gentext key="revhistory" text="Hanes Adolygu"/>
+<l:gentext key="revision" text="Adolygiad"/>
+<l:gentext key="Revision" text="Adolygiad"/>
+<l:gentext key="sect1" text="Adran"/>
+<l:gentext key="sect2" text="Adran"/>
+<l:gentext key="sect3" text="Adran"/>
+<l:gentext key="sect4" text="Adran"/>
+<l:gentext key="sect5" text="Adran"/>
+<l:gentext key="section" text="Adran"/>
+<l:gentext key="Section" text="Adran"/>
+<l:gentext key="see" text="gweler"/>
+<l:gentext key="See" text="Gweler"/>
+<l:gentext key="seealso" text="gweler hefyd"/>
+<l:gentext key="Seealso" text="Gweler hefyd"/>
+<l:gentext key="SeeAlso" text="Gweler Hefyd"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Mynegai Set"/>
+<l:gentext key="SetIndex" text="Mynegai Set"/>
+<l:gentext key="Sidebar" text="Bar Ochr"/>
+<l:gentext key="sidebar" text="bar ochr"/>
+<l:gentext key="step" text="cam"/>
+<l:gentext key="Step" text="Cam"/>
+<l:gentext key="table" text="Tabl"/>
+<l:gentext key="Table" text="Tabl"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Cynghoryn"/>
+<l:gentext key="TIP" text="CYNGHORYN"/>
+<l:gentext key="Tip" text="Cynghoryn"/>
+<l:gentext key="Warning" text="Rhybudd"/>
+<l:gentext key="warning" text="Rhybudd"/>
+<l:gentext key="WARNING" text="RHYBUDD"/>
+<l:gentext key="and" text="a(c)"/>
+<l:gentext key="by" text="gan"/>
+<l:gentext key="Edited" text="Golygwyd"/>
+<l:gentext key="edited" text="Golygwyd"/>
+<l:gentext key="Editedby" text="Golygwyd:"/>
+<l:gentext key="editedby" text="Golygwyd:"/>
+<l:gentext key="in" text="yn"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="elfen sydd ddim yn bodoli"/>
+<l:gentext key="notes" text="Nodiadau"/>
+<l:gentext key="Notes" text="Nodiadau"/>
+<l:gentext key="Pgs" text="Tud."/>
+<l:gentext key="pgs" text="Tud."/>
+<l:gentext key="Revisedby" text="Adolygwyd: "/>
+<l:gentext key="revisedby" text="Adolygwyd: "/>
+<l:gentext key="TableNotes" text="Nodiadau"/>
+<l:gentext key="tablenotes" text="Nodiadau"/>
+<l:gentext key="TableofContents" text="Cynnwys"/>
+<l:gentext key="tableofcontents" text="Cynnwys"/>
+<l:gentext key="unexpectedelementname" text="Enw elfen annisgwyl"/>
+<l:gentext key="unsupported" text="ni chynhelir"/>
+<l:gentext key="xrefto" text="xref i"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Rhestr Hafaliadau"/>
+<l:gentext key="ListofEquations" text="Rhestr Hafaliadau"/>
+<l:gentext key="ListofExamples" text="Rhestr Hafaliadau"/>
+<l:gentext key="listofexamples" text="Rhestr Hafaliadau"/>
+<l:gentext key="ListofFigures" text="Rhestr Hafaliadau"/>
+<l:gentext key="listoffigures" text="Rhestr Hafaliadau"/>
+<l:gentext key="ListofProcedures" text="Dull Gweithredu"/>
+<l:gentext key="listofprocedures" text="Dull Gweithredu"/>
+<l:gentext key="listoftables" text="Rhestr Tablau"/>
+<l:gentext key="ListofTables" text="Rhestr Tablau"/>
+<l:gentext key="ListofUnknown" text="Rhestr Anhysbysion"/>
+<l:gentext key="listofunknown" text="Rhestr Anhysbysion"/>
+<l:gentext key="nav-home" text="Cartref"/>
+<l:gentext key="nav-next" text="Nesaf"/>
+<l:gentext key="nav-next-sibling" text="Ymlaen"/>
+<l:gentext key="nav-prev" text="Cynt"/>
+<l:gentext key="nav-prev-sibling" text="Yn Ôl"/>
+<l:gentext key="nav-up" text="I Fyny"/>
+<l:gentext key="nav-toc" text="Cynnwys"/>
+<l:gentext key="Draft" text="Drafft"/>
+<l:gentext key="above" text="uchod"/>
+<l:gentext key="below" text="isod"/>
+<l:gentext key="sectioncalled" text="yr adran o'r enw"/>
+<l:gentext key="index symbols" text="Symbolau"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="cyntaf-olaf"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Atodiad %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Pennod %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Hafaliad %n. %t"/>
+<l:template name="example" text="Enghraifft %n. %t"/>
+<l:template name="figure" text="Ffigur %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Rhan %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Trefn %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Cynhyrchiad %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabl %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Atodiad %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Pennod %n. %t"/>
+<l:template name="part" text="Rhan %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="C: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="C: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" yn %o"/>
+<l:template name="olink.page.citation" text=" (tudalen %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(tudalen %p)"/>
+<l:template name="docname" text=" yn %o"/>
+<l:template name="docnamelong" text=" yn y ddogfen o'r enw %o"/>
+<l:template name="pageabbrev" text="(tud. %p)"/>
+<l:template name="Page" text="Tudalen %p"/>
+<l:template name="bridgehead" text="yr adran o'r enw “%t”"/>
+<l:template name="refsection" text="yr adran o'r enw “%t”"/>
+<l:template name="refsect1" text="yr adran o'r enw “%t”"/>
+<l:template name="refsect2" text="yr adran o'r enw “%t”"/>
+<l:template name="refsect3" text="yr adran o'r enw “%t”"/>
+<l:template name="sect1" text="yr adran o'r enw “%t”"/>
+<l:template name="sect2" text="yr adran o'r enw “%t”"/>
+<l:template name="sect3" text="yr adran o'r enw “%t”"/>
+<l:template name="sect4" text="yr adran o'r enw “%t”"/>
+<l:template name="sect5" text="yr adran o'r enw “%t”"/>
+<l:template name="section" text="yr adran o'r enw “%t”"/>
+<l:template name="simplesect" text="yr adran o'r enw “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Atodiad %n"/>
+<l:template name="bridgehead" text="Adran %n"/>
+<l:template name="chapter" text="Pennod %n"/>
+<l:template name="equation" text="Hafaliad %n"/>
+<l:template name="example" text="Enghraifft %n"/>
+<l:template name="figure" text="Ffigur %n"/>
+<l:template name="part" text="Rhan %n"/>
+<l:template name="procedure" text="Trefn %n"/>
+<l:template name="productionset" text="Cynhyrchiad %n"/>
+<l:template name="qandadiv" text="C &amp; A %n"/>
+<l:template name="qandaentry" text="C: %n"/>
+<l:template name="question" text="C: %n"/>
+<l:template name="sect1" text="Adran %n"/>
+<l:template name="sect2" text="Adran %n"/>
+<l:template name="sect3" text="Adran %n"/>
+<l:template name="sect4" text="Adran %n"/>
+<l:template name="sect5" text="Adran %n"/>
+<l:template name="section" text="Adran %n"/>
+<l:template name="table" text="Tabl %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Atodiad %n, %t"/>
+<l:template name="bridgehead" text="Adran %n, “%t”"/>
+<l:template name="chapter" text="Pennod %n, %t"/>
+<l:template name="equation" text="Hafaliad %n, “%t”"/>
+<l:template name="example" text="Enghraifft %n, “%t”"/>
+<l:template name="figure" text="Ffigur %n, “%t”"/>
+<l:template name="part" text="Rhan %n, “%t”"/>
+<l:template name="procedure" text="Trefn %n, “%t”"/>
+<l:template name="productionset" text="Cynhyrchiad %n, “%t”"/>
+<l:template name="qandadiv" text="C &amp; A %n, “%t”"/>
+<l:template name="refsect1" text="yr adran o'r enw “%t”"/>
+<l:template name="refsect2" text="yr adran o'r enw “%t”"/>
+<l:template name="refsect3" text="yr adran o'r enw “%t”"/>
+<l:template name="refsection" text="yr adran o'r enw “%t”"/>
+<l:template name="sect1" text="Adran %n, “%t”"/>
+<l:template name="sect2" text="Adran %n, “%t”"/>
+<l:template name="sect3" text="Adran %n, “%t”"/>
+<l:template name="sect4" text="Adran %n, “%t”"/>
+<l:template name="sect5" text="Adran %n, “%t”"/>
+<l:template name="section" text="Adran %n, “%t”"/>
+<l:template name="simplesect" text="yr adran o'r enw “%t”"/>
+<l:template name="table" text="Tabl %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" a(c) "/>
+<l:template name="seplast" text=", a(c) "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Gweler %t"/>
+<l:template name="seealso" text="Gweler Hefyd %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Cynulleidfa: "/>
+<l:template name="MsgLevel" text="Lefel: "/>
+<l:template name="MsgOrig" text="Tarddiad: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/B"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Diffiniad: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Ionawr"/>
+<l:template name="February" text="Chwefror"/>
+<l:template name="March" text="Mawrth"/>
+<l:template name="April" text="Ebrill"/>
+<l:template name="May" text="Mai"/>
+<l:template name="June" text="Mehefin"/>
+<l:template name="July" text="Gorffenaf"/>
+<l:template name="August" text="Awst"/>
+<l:template name="September" text="Medi"/>
+<l:template name="October" text="Hydref"/>
+<l:template name="November" text="Tachwedd"/>
+<l:template name="December" text="Rhagfyr"/>
+<l:template name="Monday" text="Dydd Llun"/>
+<l:template name="Tuesday" text="Dydd Mawrth"/>
+<l:template name="Wednesday" text="Dydd Mercher"/>
+<l:template name="Thursday" text="Dydd Iau"/>
+<l:template name="Friday" text="Dydd Gwener"/>
+<l:template name="Saturday" text="Dydd Sadwrn"/>
+<l:template name="Sunday" text="Dydd Sul"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ion"/>
+<l:template name="Feb" text="Chwe"/>
+<l:template name="Mar" text="Maw"/>
+<l:template name="Apr" text="Ebr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Meh"/>
+<l:template name="Jul" text="Gorff"/>
+<l:template name="Aug" text="Awst"/>
+<l:template name="Sep" text="Medi"/>
+<l:template name="Oct" text="Hyd"/>
+<l:template name="Nov" text="Tach"/>
+<l:template name="Dec" text="Rhag"/>
+<l:template name="Mon" text="Llun"/>
+<l:template name="Tue" text="Mawrth"/>
+<l:template name="Wed" text="Mercher"/>
+<l:template name="Thu" text="Iau"/>
+<l:template name="Fri" text="Gwener"/>
+<l:template name="Sat" text="Sadwrn"/>
+<l:template name="Sun" text="Sul"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 Welsh (UNITED KINGDOM)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="35">Ch</l:l>
+<l:l i="35">ch</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="45">Dd</l:l>
+<l:l i="45">dd</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="65">Ff</l:l>
+<l:l i="65">ff</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="75">Ng</l:l>
+<l:l i="75">ng</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="125">Ll</l:l>
+<l:l i="125">ll</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="165">Ph</l:l>
+<l:l i="165">ph</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="185">Rh</l:l>
+<l:l i="185">rh</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="205">Th</l:l>
+<l:l i="205">th</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/da.xml b/docs/xsl-generic/common/da.xml
new file mode 100644
index 00000000..c415b8a2
--- /dev/null
+++ b/docs/xsl-generic/common/da.xml
@@ -0,0 +1,658 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="da" english-language-name="Danish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/da.xml -->
+<!-- * -->
+<!-- * E-mail the edited da.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumé"/>
+<l:gentext key="abstract" text="resumé"/>
+<l:gentext key="Answer" text="Svar"/>
+<l:gentext key="answer" text="svar"/>
+<l:gentext key="Appendix" text="Appendiks"/>
+<l:gentext key="appendix" text="appendiks"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="artikel"/>
+<l:gentext key="Author" text="Forfatter"/>
+<l:gentext key="Bibliography" text="Litteraturliste"/>
+<l:gentext key="bibliography" text="litteraturliste"/>
+<l:gentext key="Book" text="Bog"/>
+<l:gentext key="book" text="bog"/>
+<l:gentext key="CAUTION" text="PAS PÅ"/>
+<l:gentext key="Caution" text="Pas på"/>
+<l:gentext key="caution" text="pas på"/>
+<l:gentext key="Chapter" text="Kapitel"/>
+<l:gentext key="chapter" text="kapitel"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Ophavsret"/>
+<l:gentext key="copyright" text="ophavsret"/>
+<l:gentext key="Dedication" text="Tilegnet"/>
+<l:gentext key="dedication" text="tilegnet"/>
+<l:gentext key="Edition" text="Udgave"/>
+<l:gentext key="edition" text="udgave"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ligning"/>
+<l:gentext key="equation" text="ligning"/>
+<l:gentext key="Example" text="Eksempel"/>
+<l:gentext key="example" text="eksempel"/>
+<l:gentext key="Figure" text="Figur"/>
+<l:gentext key="figure" text="figur"/>
+<l:gentext key="Glossary" text="Ordliste"/>
+<l:gentext key="glossary" text="ordliste"/>
+<l:gentext key="GlossSee" text="Se"/>
+<l:gentext key="glosssee" text="se"/>
+<l:gentext key="GlossSeeAlso" text="Se også"/>
+<l:gentext key="glossseealso" text="se også"/>
+<l:gentext key="IMPORTANT" text="VIGTIGT"/>
+<l:gentext key="important" text="vigtigt"/>
+<l:gentext key="Important" text="Vigtigt"/>
+<l:gentext key="Index" text="Stikordsregister"/>
+<l:gentext key="index" text="stikordsregister"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Retslig note"/>
+<l:gentext key="legalnotice" text="retslig note"/>
+<l:gentext key="MsgAud" text="Målgruppe"/>
+<l:gentext key="msgaud" text="målgruppe"/>
+<l:gentext key="MsgLevel" text="Niveau"/>
+<l:gentext key="msglevel" text="niveau"/>
+<l:gentext key="MsgOrig" text="Grundlag"/>
+<l:gentext key="msgorig" text="grundlag"/>
+<l:gentext key="NOTE" text="BEMÆRK"/>
+<l:gentext key="Note" text="Bemærk"/>
+<l:gentext key="note" text="bemærk"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="del"/>
+<l:gentext key="Preface" text="Forord"/>
+<l:gentext key="preface" text="forord"/>
+<l:gentext key="Procedure" text="Procedure"/>
+<l:gentext key="procedure" text="procedure"/>
+<l:gentext key="ProductionSet" text="Produktion"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Udgivet"/>
+<l:gentext key="published" text="udgivet"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Spørgsmål og Svar"/>
+<l:gentext key="qandadiv" text="Spørgsmål og Svar"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Spørgsmål"/>
+<l:gentext key="question" text="spørgsmå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="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Navn"/>
+<l:gentext key="refname" text="navn"/>
+<l:gentext key="RefSection" text="Afsnit"/>
+<l:gentext key="refsection" text="afsnit"/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="synopsis"/>
+<l:gentext key="RevHistory" text="Revisionshistorie"/>
+<l:gentext key="revhistory" text="revisionshistorie"/>
+<l:gentext key="revision" text="revision"/>
+<l:gentext key="Revision" text="Revision"/>
+<l:gentext key="sect1" text="Afsnit"/>
+<l:gentext key="sect2" text="Afsnit"/>
+<l:gentext key="sect3" text="Afsnit"/>
+<l:gentext key="sect4" text="Afsnit"/>
+<l:gentext key="sect5" text="Afsnit"/>
+<l:gentext key="section" text="afsnit"/>
+<l:gentext key="Section" text="Afsnit"/>
+<l:gentext key="see" text="se"/>
+<l:gentext key="See" text="Se"/>
+<l:gentext key="seealso" text="se også"/>
+<l:gentext key="Seealso" text="Se også"/>
+<l:gentext key="SeeAlso" text="Se også"/>
+<l:gentext key="set" text="sæt"/>
+<l:gentext key="Set" text="Sæt"/>
+<l:gentext key="setindex" text="sæt indeks"/>
+<l:gentext key="SetIndex" text="Sæt indeks"/>
+<l:gentext key="Sidebar" text="Sidebjælke"/>
+<l:gentext key="sidebar" text="sidebjælke"/>
+<l:gentext key="step" text="trin"/>
+<l:gentext key="Step" text="Trin"/>
+<l:gentext key="table" text="tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="vink"/>
+<l:gentext key="TIP" text="VINK"/>
+<l:gentext key="Tip" text="Vink"/>
+<l:gentext key="Warning" text="Advarsel"/>
+<l:gentext key="warning" text="advarsel"/>
+<l:gentext key="WARNING" text="ADVARSEL"/>
+<l:gentext key="and" text="og"/>
+<l:gentext key="by" text="af"/>
+<l:gentext key="Edited" text="Redigeret"/>
+<l:gentext key="edited" text="redigeret"/>
+<l:gentext key="Editedby" text="Redigeret af"/>
+<l:gentext key="editedby" text="redigeret af"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=", "/>
+<l:gentext key="nonexistantelement" text="ikke-eksisterende element"/>
+<l:gentext key="notes" text="slutbemærkning:"/>
+<l:gentext key="Notes" text="Slutbemærkning:"/>
+<l:gentext key="Pgs" text="Siderne"/>
+<l:gentext key="pgs" text="siderne"/>
+<l:gentext key="Revisedby" text="Revideret af: "/>
+<l:gentext key="revisedby" text="revideret af: "/>
+<l:gentext key="TableNotes" text="Noter:"/>
+<l:gentext key="tablenotes" text="noter:"/>
+<l:gentext key="TableofContents" text="Indholdsfortegnelse"/>
+<l:gentext key="tableofcontents" text="indholdsfortegnelse"/>
+<l:gentext key="unexpectedelementname" text="uventet elementnavn"/>
+<l:gentext key="unsupported" text="ikke understøttet"/>
+<l:gentext key="xrefto" text="krydshenvisning til"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="ligningsliste"/>
+<l:gentext key="ListofEquations" text="Ligningsliste"/>
+<l:gentext key="ListofExamples" text="Eksempelliste"/>
+<l:gentext key="listofexamples" text="eksempelliste"/>
+<l:gentext key="ListofFigures" text="Figurliste"/>
+<l:gentext key="listoffigures" text="figurliste"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="tabelliste"/>
+<l:gentext key="ListofTables" text="Tabelliste"/>
+<l:gentext key="ListofUnknown" text="Liste over ukendte"/>
+<l:gentext key="listofunknown" text="liste over ukendte"/>
+<l:gentext key="nav-home" text="hjem"/>
+<l:gentext key="nav-next" text="næste"/>
+<l:gentext key="nav-next-sibling" text="hurtigt fremad"/>
+<l:gentext key="nav-prev" text="forrige"/>
+<l:gentext key="nav-prev-sibling" text="hurtigt tilbage"/>
+<l:gentext key="nav-up" text="op"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<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æøå"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Appendiks %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ligning %n. %t"/>
+<l:template name="example" text="Eksempel %n. %t"/>
+<l:template name="figure" text="Figur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produktion %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Spørgsmål %n"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Appendiks %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Spørgsmål %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Spørgsmål %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="afsnittet der hedder “%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Svar %n"/>
+<l:template name="appendix" text="Appendiks %n"/>
+<l:template name="bridgehead" text="Afsnit %n"/>
+<l:template name="chapter" text="Kapitel %n"/>
+<l:template name="equation" text="Ligning %n"/>
+<l:template name="example" text="Eksempel %n"/>
+<l:template name="figure" text="Figur %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Procedure %n"/>
+<l:template name="productionset" text="Produktion %n"/>
+<l:template name="qandadiv" text="Spørgsmål og Svar %n"/>
+<l:template name="qandaentry" text="Spørgsmål %n"/>
+<l:template name="question" text="Spørgsmål %n"/>
+<l:template name="sect1" text="Afsnit %n"/>
+<l:template name="sect2" text="Afsnit %n"/>
+<l:template name="sect3" text="Afsnit %n"/>
+<l:template name="sect4" text="Afsnit %n"/>
+<l:template name="sect5" text="Afsnit %n"/>
+<l:template name="section" text="Afsnit %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Appendiks %n, %t"/>
+<l:template name="bridgehead" text="Afsnit %n, “%t”"/>
+<l:template name="chapter" text="Kapitel %n, %t"/>
+<l:template name="equation" text="Ligning %n, “%t”"/>
+<l:template name="example" text="Eksempel %n, “%t”"/>
+<l:template name="figure" text="Figur %n, “%t”"/>
+<l:template name="part" text="Del %n, “%t”"/>
+<l:template name="procedure" text="Procedure %n, “%t”"/>
+<l:template name="productionset" text="Produktion %n, “%t”"/>
+<l:template name="qandadiv" text="Spørgsmål og Svar %n, “%t”"/>
+<l:template name="refsect1" text="afsnittet der hedder “%t”"/>
+<l:template name="refsect2" text="afsnittet der hedder “%t”"/>
+<l:template name="refsect3" text="afsnittet der hedder “%t”"/>
+<l:template name="refsection" text="afsnittet der hedder “%t”"/>
+<l:template name="sect1" text="Afsnit %n, “%t”"/>
+<l:template name="sect2" text="Afsnit %n, “%t”"/>
+<l:template name="sect3" text="Afsnit %n, “%t”"/>
+<l:template name="sect4" text="Afsnit %n, “%t”"/>
+<l:template name="sect5" text="Afsnit %n, “%t”"/>
+<l:template name="section" text="Afsnit %n, “%t”"/>
+<l:template name="simplesect" text="afsnittet der hedder “%t”"/>
+<l:template name="table" text="Tabel %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" og "/>
+<l:template name="seplast" text=" og "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Se %t"/>
+<l:template name="seealso" text="Se også %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Målgruppe: "/>
+<l:template name="MsgLevel" text="Niveau: "/>
+<l:template name="MsgOrig" text="Grundlag: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januar"/>
+<l:template name="February" text="Februar"/>
+<l:template name="March" text="Marts"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Maj"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="July"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="Oktober"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="Mandag"/>
+<l:template name="Tuesday" text="Tirsdag"/>
+<l:template name="Wednesday" text="Onsdag"/>
+<l:template name="Thursday" text="Torsdag"/>
+<l:template name="Friday" text="Fredag"/>
+<l:template name="Saturday" text="Lørdag"/>
+<l:template name="Sunday" text="Søndag"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Maj"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Man"/>
+<l:template name="Tue" text="Tir"/>
+<l:template name="Wed" text="ins"/>
+<l:template name="Thu" text="Tor"/>
+<l:template name="Fri" text="Fre"/>
+<l:template name="Sat" text="Lør"/>
+<l:template name="Sun" text="Søn"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0406 Danish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+<l:l i="27">Æ</l:l>
+<l:l i="27">æ</l:l>
+<l:l i="28">Ø</l:l>
+<l:l i="28">ø</l:l>
+<l:l i="29">Å</l:l>
+<l:l i="29">å</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/de.xml b/docs/xsl-generic/common/de.xml
new file mode 100644
index 00000000..bc2aedf6
--- /dev/null
+++ b/docs/xsl-generic/common/de.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="de" english-language-name="German">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/de.xml -->
+<!-- * -->
+<!-- * E-mail the edited de.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Zusammenfassung"/>
+<l:gentext key="abstract" text="Zusammenfassung"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Anhang"/>
+<l:gentext key="appendix" text="Anhang"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="Artikel"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Literaturverzeichnis"/>
+<l:gentext key="bibliography" text="Literaturverzeichnis"/>
+<l:gentext key="Book" text="Buch"/>
+<l:gentext key="book" text="Buch"/>
+<l:gentext key="CAUTION" text="ACHTUNG"/>
+<l:gentext key="Caution" text="Achtung"/>
+<l:gentext key="caution" text="Achtung"/>
+<l:gentext key="Chapter" text="Kapitel"/>
+<l:gentext key="chapter" text="Kapitel"/>
+<l:gentext key="Colophon" text="Kolophon"/>
+<l:gentext key="colophon" text="Kolophon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Widmung"/>
+<l:gentext key="dedication" text="Widmung"/>
+<l:gentext key="Edition" text="Ausgabe"/>
+<l:gentext key="edition" text="Ausgabe"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Gleichung"/>
+<l:gentext key="equation" text="Gleichung"/>
+<l:gentext key="Example" text="Beispiel"/>
+<l:gentext key="example" text="Beispiel"/>
+<l:gentext key="Figure" text="Abbildung"/>
+<l:gentext key="figure" text="Abbildung"/>
+<l:gentext key="Glossary" text="Glossar"/>
+<l:gentext key="glossary" text="Glossar"/>
+<l:gentext key="GlossSee" text="Siehe"/>
+<l:gentext key="glosssee" text="Siehe"/>
+<l:gentext key="GlossSeeAlso" text="Siehe auch"/>
+<l:gentext key="glossseealso" text="Siehe auch"/>
+<l:gentext key="IMPORTANT" text="WICHTIG"/>
+<l:gentext key="important" text="Wichtig"/>
+<l:gentext key="Important" text="Wichtig"/>
+<l:gentext key="Index" text="Stichwortverzeichnis"/>
+<l:gentext key="index" text="Stichwortverzeichnis"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Rechtlicher Hinweis"/>
+<l:gentext key="legalnotice" text="Rechtlicher Hinweis"/>
+<l:gentext key="MsgAud" text="Zielgruppe"/>
+<l:gentext key="msgaud" text="Zielgruppe"/>
+<l:gentext key="MsgLevel" text="Dringlichkeit"/>
+<l:gentext key="msglevel" text="Dringlichkeit"/>
+<l:gentext key="MsgOrig" text="Ursprung"/>
+<l:gentext key="msgorig" text="Ursprung"/>
+<l:gentext key="NOTE" text="ANMERKUNG"/>
+<l:gentext key="Note" text="Anmerkung"/>
+<l:gentext key="note" text="Anmerkung"/>
+<l:gentext key="Part" text="Teil"/>
+<l:gentext key="part" text="Teil"/>
+<l:gentext key="Preface" text="Vorwort"/>
+<l:gentext key="preface" text="Vorwort"/>
+<l:gentext key="Procedure" text="Prozedur"/>
+<l:gentext key="procedure" text="Prozedur"/>
+<l:gentext key="ProductionSet" text="Produktion"/>
+<l:gentext key="PubDate" text="Veröffentlicht"/>
+<l:gentext key="pubdate" text="Veröffentlicht"/>
+<l:gentext key="Published" text="Veröffentlicht"/>
+<l:gentext key="published" text="Veröffentlicht"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="F &amp; A"/>
+<l:gentext key="qandadiv" text="F &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<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="References" text="References" lang="en"/>
+<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="sect1" text="Abschnitt"/>
+<l:gentext key="sect2" text="Abschnitt"/>
+<l:gentext key="sect3" text="Abschnitt"/>
+<l:gentext key="sect4" text="Abschnitt"/>
+<l:gentext key="sect5" text="Abschnitt"/>
+<l:gentext key="section" text="Abschnitt"/>
+<l:gentext key="Section" text="Abschnitt"/>
+<l:gentext key="see" text="Siehe"/>
+<l:gentext key="See" text="Siehe"/>
+<l:gentext key="seealso" text="Siehe auch"/>
+<l:gentext key="Seealso" text="Siehe auch"/>
+<l:gentext key="SeeAlso" text="Siehe auch"/>
+<l:gentext key="set" text="Satz"/>
+<l:gentext key="Set" text="Satz"/>
+<l:gentext key="setindex" text="Stichwortverzeichnis"/>
+<l:gentext key="SetIndex" text="Stichwortverzeichnis"/>
+<l:gentext key="Sidebar" text="Randnotiz"/>
+<l:gentext key="sidebar" text="randnotiz"/>
+<l:gentext key="step" text="Schritt"/>
+<l:gentext key="Step" text="Schritt"/>
+<l:gentext key="table" text="Tabelle"/>
+<l:gentext key="Table" text="Tabelle"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<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ßnoten"/>
+<l:gentext key="Notes" text="Fußnoten"/>
+<l:gentext key="Pgs" text="Seiten"/>
+<l:gentext key="pgs" text="Seiten"/>
+<l:gentext key="Revisedby" text="Geändert durch: "/>
+<l:gentext key="revisedby" text="Geändert durch: "/>
+<l:gentext key="TableNotes" text="Bemerkungen"/>
+<l:gentext key="tablenotes" text="Bemerkungen"/>
+<l:gentext key="TableofContents" text="Inhaltsverzeichnis"/>
+<l:gentext key="tableofcontents" text="Inhaltsverzeichnis"/>
+<l:gentext key="unexpectedelementname" text="Unerwarteter Elementname"/>
+<l:gentext key="unsupported" text="wird nicht unterstützt"/>
+<l:gentext key="xrefto" text="xref auf"/>
+<l:gentext key="Authors" text="Autoren"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="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="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Tabellenverzeichnis"/>
+<l:gentext key="ListofTables" text="Tabellenverzeichnis"/>
+<l:gentext key="ListofUnknown" text="???-Verzeichnis"/>
+<l:gentext key="listofunknown" text="???-Verzeichnis"/>
+<l:gentext key="nav-home" text="Zum Anfang"/>
+<l:gentext key="nav-next" text="Weiter"/>
+<l:gentext key="nav-next-sibling" text="Schnell weiter"/>
+<l:gentext key="nav-prev" text="Zurück"/>
+<l:gentext key="nav-prev-sibling" text="Schnell zurück"/>
+<l:gentext key="nav-up" text="Nach oben"/>
+<l:gentext key="nav-toc" text="InhV"/>
+<l:gentext key="Draft" text="Entwurf"/>
+<l:gentext key="above" text="oben"/>
+<l:gentext key="below" text="unten"/>
+<l:gentext key="sectioncalled" text="der Abschnitt namens"/>
+<l:gentext key="index symbols" text="Symbole"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzäöüß"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‚"/>
+<l:dingbat key="nestedendquote" text="‘"/>
+<l:dingbat key="singlestartquote" text="‚"/>
+<l:dingbat key="singleendquote" text="‘"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="3"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Anhang %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Gleichung %n. %t"/>
+<l:template name="example" text="Beispiel %n. %t"/>
+<l:template name="figure" text="Abbildung %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Teil %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prozedur %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produktion %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="F: %n"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabelle %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Anhang %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="part" text="Teil %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="F: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="F: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(Seite %p)"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(S. %p)"/>
+<l:template name="Page" text="Seite %p"/>
+<l:template name="bridgehead" text="„%t“"/>
+<l:template name="refsection" text="„%t“"/>
+<l:template name="refsect1" text="„%t“"/>
+<l:template name="refsect2" text="„%t“"/>
+<l:template name="refsect3" text="„%t“"/>
+<l:template name="sect1" text="„%t“"/>
+<l:template name="sect2" text="„%t“"/>
+<l:template name="sect3" text="„%t“"/>
+<l:template name="sect4" text="„%t“"/>
+<l:template name="sect5" text="„%t“"/>
+<l:template name="section" text="„%t“"/>
+<l:template name="simplesect" text="„%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Anhang %n"/>
+<l:template name="bridgehead" text="Abschnitt %n"/>
+<l:template name="chapter" text="Kapitel %n"/>
+<l:template name="equation" text="Gleichung %n"/>
+<l:template name="example" text="Beispiel %n"/>
+<l:template name="figure" text="Abbildung %n"/>
+<l:template name="part" text="Teil %n"/>
+<l:template name="procedure" text="Prozedur %n"/>
+<l:template name="productionset" text="Produktion %n"/>
+<l:template name="qandadiv" text="F &amp; A %n"/>
+<l:template name="qandaentry" text="F: %n"/>
+<l:template name="question" text="F: %n"/>
+<l:template name="sect1" text="Abschnitt %n"/>
+<l:template name="sect2" text="Abschnitt %n"/>
+<l:template name="sect3" text="Abschnitt %n"/>
+<l:template name="sect4" text="Abschnitt %n"/>
+<l:template name="sect5" text="Abschnitt %n"/>
+<l:template name="section" text="Abschnitt %n"/>
+<l:template name="table" text="Tabelle %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Anhang %n, %t"/>
+<l:template name="bridgehead" text="Abschnitt %n, „%t“"/>
+<l:template name="chapter" text="Kapitel %n, %t"/>
+<l:template name="equation" text="Gleichung %n, „%t“"/>
+<l:template name="example" text="Beispiel %n, „%t“"/>
+<l:template name="figure" text="Abbildung %n, „%t“"/>
+<l:template name="part" text="Teil %n, „%t“"/>
+<l:template name="procedure" text="Prozedur %n, „%t“"/>
+<l:template name="productionset" text="Produktion %n, „%t“"/>
+<l:template name="qandadiv" text="F &amp; A %n, „%t“"/>
+<l:template name="refsect1" text="der Abschnitt namens „%t“"/>
+<l:template name="refsect2" text="der Abschnitt namens „%t“"/>
+<l:template name="refsect3" text="der Abschnitt namens „%t“"/>
+<l:template name="refsection" text="der Abschnitt namens „%t“"/>
+<l:template name="sect1" text="Abschnitt %n, „%t“"/>
+<l:template name="sect2" text="Abschnitt %n, „%t“"/>
+<l:template name="sect3" text="Abschnitt %n, „%t“"/>
+<l:template name="sect4" text="Abschnitt %n, „%t“"/>
+<l:template name="sect5" text="Abschnitt %n, „%t“"/>
+<l:template name="section" text="Abschnitt %n, „%t“"/>
+<l:template name="simplesect" text="der Abschnitt namens „%t“"/>
+<l:template name="table" text="Tabelle %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" und "/>
+<l:template name="seplast" text=" und "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Siehe %t"/>
+<l:template name="seealso" text="Siehe auch %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Zielgruppe: "/>
+<l:template name="MsgLevel" text="Dringlichkeit: "/>
+<l:template name="MsgOrig" text="Ursprung: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januar"/>
+<l:template name="February" text="Februar"/>
+<l:template name="March" text="März"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Mai"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="Juli"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="Oktober"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="Dezember"/>
+<l:template name="Monday" text="Montag"/>
+<l:template name="Tuesday" text="Dienstag"/>
+<l:template name="Wednesday" text="Mittwoch"/>
+<l:template name="Thursday" text="Donnerstag"/>
+<l:template name="Friday" text="Freitag"/>
+<l:template name="Saturday" text="Samstag"/>
+<l:template name="Sunday" text="Sonntag"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dez"/>
+<l:template name="Mon" text="Mo"/>
+<l:template name="Tue" text="Di"/>
+<l:template name="Wed" text="Mi"/>
+<l:template name="Thu" text="Do"/>
+<l:template name="Fri" text="Fr"/>
+<l:template name="Sat" text="Sa"/>
+<l:template name="Sun" text="So"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0407 German (GERMANY)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbole</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">Ä</l:l>
+<l:l i="1">ä</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="15">Ö</l:l>
+<l:l i="15">ö</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="21">Ü</l:l>
+<l:l i="21">ü</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/el.xml b/docs/xsl-generic/common/el.xml
new file mode 100644
index 00000000..a0556621
--- /dev/null
+++ b/docs/xsl-generic/common/el.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="el" english-language-name="Greek">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/el.xml -->
+<!-- * -->
+<!-- * E-mail the edited el.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Περίληψη"/>
+<l:gentext key="abstract" text="Περίληψη"/>
+<l:gentext key="Answer" text="Α:"/>
+<l:gentext key="answer" text="Α:"/>
+<l:gentext key="Appendix" text="Παράρτημα"/>
+<l:gentext key="appendix" text="παράρτημα"/>
+<l:gentext key="Article" text="Άρθρο"/>
+<l:gentext key="article" text="Άρθρο"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Βιβλιογραφία"/>
+<l:gentext key="bibliography" text="Βιβλιογραφία"/>
+<l:gentext key="Book" text="Βιβλίο"/>
+<l:gentext key="book" text="Βιβλίο"/>
+<l:gentext key="CAUTION" text="ΠΡΟΣΟΧΗ"/>
+<l:gentext key="Caution" text="Προσοχή"/>
+<l:gentext key="caution" text="Προσοχή"/>
+<l:gentext key="Chapter" text="Κεφάλαιο"/>
+<l:gentext key="chapter" text="κεφάλαιο"/>
+<l:gentext key="Colophon" text="Κορωνίδα"/>
+<l:gentext key="colophon" text="Κορωνίδα"/>
+<l:gentext key="Copyright" text="Πνευματικά Δικαιώματα"/>
+<l:gentext key="copyright" text="Πνευματικά Δικαιώματα"/>
+<l:gentext key="Dedication" text="Αφιέρωση"/>
+<l:gentext key="dedication" text="Αφιέρωση"/>
+<l:gentext key="Edition" text="Έκδοση"/>
+<l:gentext key="edition" text="Έκδοση"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Εξίσωση"/>
+<l:gentext key="equation" text="Εξίσωση"/>
+<l:gentext key="Example" text="Παράδειγμα"/>
+<l:gentext key="example" text="Παράδειγμα"/>
+<l:gentext key="Figure" text="Σχήμα"/>
+<l:gentext key="figure" text="Σχήμα"/>
+<l:gentext key="Glossary" text="Γλωσσάριο"/>
+<l:gentext key="glossary" text="Γλωσσάριο"/>
+<l:gentext key="GlossSee" text="Δείτε"/>
+<l:gentext key="glosssee" text="Δείτε"/>
+<l:gentext key="GlossSeeAlso" text="Δείτε Επίσης"/>
+<l:gentext key="glossseealso" text="Δείτε Επίσης"/>
+<l:gentext key="IMPORTANT" text="ΣΗΜΑΝΤΙΚΟ"/>
+<l:gentext key="important" text="Σημαντικό"/>
+<l:gentext key="Important" text="Σημαντικό"/>
+<l:gentext key="Index" text="Ευρετήριο"/>
+<l:gentext key="index" text="Ευρετήριο"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Νομική Σημείωση"/>
+<l:gentext key="legalnotice" text="Νομική Σημείωση"/>
+<l:gentext key="MsgAud" text="Ακροατήριο"/>
+<l:gentext key="msgaud" text="Ακροατήριο"/>
+<l:gentext key="MsgLevel" text="Επίπεδο"/>
+<l:gentext key="msglevel" text="Επίπεδο"/>
+<l:gentext key="MsgOrig" text="Πηγή"/>
+<l:gentext key="msgorig" text="Πηγή"/>
+<l:gentext key="NOTE" text="ΣΗΜΕΙΩΣΗ"/>
+<l:gentext key="Note" text="Σημείωση"/>
+<l:gentext key="note" text="Σημείωση"/>
+<l:gentext key="Part" text="Μέρος"/>
+<l:gentext key="part" text="Μέρος"/>
+<l:gentext key="Preface" text="Εισαγωγή"/>
+<l:gentext key="preface" text="Εισαγωγή"/>
+<l:gentext key="Procedure" text="Διαδικασία"/>
+<l:gentext key="procedure" text="Διαδικασία"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Δημοσιευμένο"/>
+<l:gentext key="published" text="Δημοσιευμένο"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Ε και Α"/>
+<l:gentext key="qandadiv" text="Ε και Α"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Ε:"/>
+<l:gentext key="question" text="Ε:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Αναφορά"/>
+<l:gentext key="reference" text="Αναφορά"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Όνομα"/>
+<l:gentext key="refname" text="Όνομα"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Σύνοψη"/>
+<l:gentext key="refsynopsisdiv" text="Σύνοψη"/>
+<l:gentext key="RevHistory" text="Ιστορικό Αναθεωρήσεων"/>
+<l:gentext key="revhistory" text="Ιστορικό Αναθεωρήσεων"/>
+<l:gentext key="revision" text="Αναθεώρηση"/>
+<l:gentext key="Revision" text="Αναθεώρηση"/>
+<l:gentext key="sect1" text="τμήμα"/>
+<l:gentext key="sect2" text="τμήμα"/>
+<l:gentext key="sect3" text="τμήμα"/>
+<l:gentext key="sect4" text="τμήμα"/>
+<l:gentext key="sect5" text="τμήμα"/>
+<l:gentext key="section" text="τμήμα"/>
+<l:gentext key="Section" text="Τμήμα"/>
+<l:gentext key="see" text="Δείτε"/>
+<l:gentext key="See" text="Δείτε"/>
+<l:gentext key="seealso" text="Δείτε Επίσης"/>
+<l:gentext key="Seealso" text="Δείτε επίσης"/>
+<l:gentext key="SeeAlso" text="Δείτε Επίσης"/>
+<l:gentext key="set" text="Σύνολο"/>
+<l:gentext key="Set" text="Σύνολο"/>
+<l:gentext key="setindex" text="Ευρετήριο Συνόλων"/>
+<l:gentext key="SetIndex" text="Ευρετήριο Συνόλων"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="επεξηγηματικό πλευρικό αρθρίδιο"/>
+<l:gentext key="step" text="φάση"/>
+<l:gentext key="Step" text="Φάση"/>
+<l:gentext key="table" text="Πίνακας"/>
+<l:gentext key="Table" text="Πίνακας"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Υπόδειξη"/>
+<l:gentext key="TIP" text="ΥΠΟΔΕΙΞΗ"/>
+<l:gentext key="Tip" text="Υπόδειξη"/>
+<l:gentext key="Warning" text="Προειδοποίηση"/>
+<l:gentext key="warning" text="Προειδοποίηση"/>
+<l:gentext key="WARNING" text="ΠΡΟΕΙΔΟΠΟΙΗΣΗ"/>
+<l:gentext key="and" text="και"/>
+<l:gentext key="by" text="από"/>
+<l:gentext key="Edited" text="Επιμέλεια"/>
+<l:gentext key="edited" text="Επιμέλεια"/>
+<l:gentext key="Editedby" text="Επιμέλεια από"/>
+<l:gentext key="editedby" text="Επιμέλεια από"/>
+<l:gentext key="in" text="σε"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="μη-υπαρκτό στοιχείο"/>
+<l:gentext key="notes" text="Σημειώσεις"/>
+<l:gentext key="Notes" text="Σημειώσεις"/>
+<l:gentext key="Pgs" text="Σλδς."/>
+<l:gentext key="pgs" text="Σλδς."/>
+<l:gentext key="Revisedby" text="Revised by: "/>
+<l:gentext key="revisedby" text="Revised by: "/>
+<l:gentext key="TableNotes" text="Πίνακας Σημειώσεων"/>
+<l:gentext key="tablenotes" text="Πίνακας Σημειώσεων"/>
+<l:gentext key="TableofContents" text="Πίνακας Περιεχομένων"/>
+<l:gentext key="tableofcontents" text="Πίνακας Περιεχομένων"/>
+<l:gentext key="unexpectedelementname" text="Μη αναμενόμενο όνομα στοιχείου"/>
+<l:gentext key="unsupported" text="μη υποστηριζόμενο"/>
+<l:gentext key="xrefto" text="αντιπαραπομπή σε"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Κατάλογος Εξισώσεων"/>
+<l:gentext key="ListofEquations" text="Κατάλογος Εξισώσεων"/>
+<l:gentext key="ListofExamples" text="Κατάλογος Παραδειγμάτων"/>
+<l:gentext key="listofexamples" text="Κατάλογος Παραδειγμάτων"/>
+<l:gentext key="ListofFigures" text="Κατάλογος Σχημάτων"/>
+<l:gentext key="listoffigures" text="Κατάλογος Σχημάτων"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Κατάλογος Πινάκων"/>
+<l:gentext key="ListofTables" text="Κατάλογος Πινάκων"/>
+<l:gentext key="ListofUnknown" text="Κατάλογος Αγνώστων"/>
+<l:gentext key="listofunknown" text="Κατάλογος Αγνώστων"/>
+<l:gentext key="nav-home" text="Αρχή"/>
+<l:gentext key="nav-next" text="Επόμενο"/>
+<l:gentext key="nav-next-sibling" text="Προς το τέλος"/>
+<l:gentext key="nav-prev" text="Προηγ"/>
+<l:gentext key="nav-prev-sibling" text="Προς την αρχή"/>
+<l:gentext key="nav-up" text="Πάνω"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="&amp;#x201C;"/>
+<l:dingbat key="endquote" text="&amp;#x201D;"/>
+<l:dingbat key="nestedstartquote" text="&amp;#x2018;"/>
+<l:dingbat key="nestedendquote" text="&amp;#x2019;"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="&amp;#x2022;"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Παράρτημα %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Κεφάλαιο %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Εξίσωση %n. %t"/>
+<l:template name="example" text="Παράδειγμα %n. %t"/>
+<l:template name="figure" text="Σχήμα %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Μέρος %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Διαδικασία %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Πίνακας %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Παράρτημα %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Κεφάλαιο %n. %t"/>
+<l:template name="part" text="Μέρος %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Ε: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Ε: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsection" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect1" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect2" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect3" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect1" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect2" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect3" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect4" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect5" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="section" text="&amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="simplesect" text="&amp;#x201C;%t&amp;#x201D;"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Α: %n"/>
+<l:template name="appendix" text="Παράρτημα %n"/>
+<l:template name="bridgehead" text="Τμήμα %n"/>
+<l:template name="chapter" text="Κεφάλαιο %n"/>
+<l:template name="equation" text="Εξίσωση %n"/>
+<l:template name="example" text="Παράδειγμα %n"/>
+<l:template name="figure" text="Σχήμα %n"/>
+<l:template name="part" text="Μέρος %n"/>
+<l:template name="procedure" text="Διαδικασία %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Ε και Α %n"/>
+<l:template name="qandaentry" text="Ε: %n"/>
+<l:template name="question" text="Ε: %n"/>
+<l:template name="sect1" text="Τμήμα %n"/>
+<l:template name="sect2" text="Τμήμα %n"/>
+<l:template name="sect3" text="Τμήμα %n"/>
+<l:template name="sect4" text="Τμήμα %n"/>
+<l:template name="sect5" text="Τμήμα %n"/>
+<l:template name="section" text="Τμήμα %n"/>
+<l:template name="table" text="Πίνακας %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Παράρτημα %n, %t"/>
+<l:template name="bridgehead" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="chapter" text="Κεφάλαιο %n, %t"/>
+<l:template name="equation" text="Εξίσωση %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="example" text="Παράδειγμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="figure" text="Σχήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="part" text="Μέρος %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="procedure" text="Διαδικασία %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="productionset" text="Production %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="qandadiv" text="Ε και Α %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect1" text="the section called &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect2" text="the section called &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsect3" text="the section called &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="refsection" text="the section called &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect1" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect2" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect3" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect4" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="sect5" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="section" text="Τμήμα %n, &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="simplesect" text="the section called &amp;#x201C;%t&amp;#x201D;"/>
+<l:template name="table" text="Πίνακας %n, &amp;#x201C;%t&amp;#x201D;"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" και "/>
+<l:template name="seplast" text=", και "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Δείτε %t"/>
+<l:template name="seealso" text="Δείτε Επίσης %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Ακροατήριο: "/>
+<l:template name="MsgLevel" text="Επίπεδο: "/>
+<l:template name="MsgOrig" text="Πηγή: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0408 Greek"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/en.xml b/docs/xsl-generic/common/en.xml
new file mode 100644
index 00000000..1aa99856
--- /dev/null
+++ b/docs/xsl-generic/common/en.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en" english-language-name="English">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/en.xml -->
+<!-- * -->
+<!-- * E-mail the edited en.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstract"/>
+<l:gentext key="abstract" text="Abstract"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Appendix"/>
+<l:gentext key="appendix" text="Appendix"/>
+<l:gentext key="Article" text="Article"/>
+<l:gentext key="article" text="Article"/>
+<l:gentext key="Author" text="Author"/>
+<l:gentext key="Bibliography" text="Bibliography"/>
+<l:gentext key="bibliography" text="Bibliography"/>
+<l:gentext key="Book" text="Book"/>
+<l:gentext key="book" text="Book"/>
+<l:gentext key="CAUTION" text="CAUTION"/>
+<l:gentext key="Caution" text="Caution"/>
+<l:gentext key="caution" text="Caution"/>
+<l:gentext key="Chapter" text="Chapter"/>
+<l:gentext key="chapter" text="Chapter"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedication"/>
+<l:gentext key="dedication" text="Dedication"/>
+<l:gentext key="Edition" text="Edition"/>
+<l:gentext key="edition" text="Edition"/>
+<l:gentext key="Editor" text="Editor"/>
+<l:gentext key="Equation" text="Equation"/>
+<l:gentext key="equation" text="Equation"/>
+<l:gentext key="Example" text="Example"/>
+<l:gentext key="example" text="Example"/>
+<l:gentext key="Figure" text="Figure"/>
+<l:gentext key="figure" text="Figure"/>
+<l:gentext key="Glossary" text="Glossary"/>
+<l:gentext key="glossary" text="Glossary"/>
+<l:gentext key="GlossSee" text="See"/>
+<l:gentext key="glosssee" text="See"/>
+<l:gentext key="GlossSeeAlso" text="See Also"/>
+<l:gentext key="glossseealso" text="See Also"/>
+<l:gentext key="IMPORTANT" text="IMPORTANT"/>
+<l:gentext key="important" text="Important"/>
+<l:gentext key="Important" text="Important"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="Index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Legal Notice"/>
+<l:gentext key="legalnotice" text="Legal Notice"/>
+<l:gentext key="MsgAud" text="Audience"/>
+<l:gentext key="msgaud" text="Audience"/>
+<l:gentext key="MsgLevel" text="Level"/>
+<l:gentext key="msglevel" text="Level"/>
+<l:gentext key="MsgOrig" text="Origin"/>
+<l:gentext key="msgorig" text="Origin"/>
+<l:gentext key="NOTE" text="NOTE"/>
+<l:gentext key="Note" text="Note"/>
+<l:gentext key="note" text="Note"/>
+<l:gentext key="Part" text="Part"/>
+<l:gentext key="part" text="Part"/>
+<l:gentext key="Preface" text="Preface"/>
+<l:gentext key="preface" text="Preface"/>
+<l:gentext key="Procedure" text="Procedure"/>
+<l:gentext key="procedure" text="Procedure"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date"/>
+<l:gentext key="pubdate" text="Publication date"/>
+<l:gentext key="Published" text="Published"/>
+<l:gentext key="published" text="Published"/>
+<l:gentext key="Publisher" text="Publisher"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="Q:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Reference"/>
+<l:gentext key="reference" text="Reference"/>
+<l:gentext key="References" text="References"/>
+<l:gentext key="RefName" text="Name"/>
+<l:gentext key="refname" text="Name"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Revision History"/>
+<l:gentext key="revhistory" text="Revision History"/>
+<l:gentext key="revision" text="Revision"/>
+<l:gentext key="Revision" text="Revision"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="Section"/>
+<l:gentext key="Section" text="Section"/>
+<l:gentext key="see" text="see"/>
+<l:gentext key="See" text="See"/>
+<l:gentext key="seealso" text="see also"/>
+<l:gentext key="Seealso" text="See also"/>
+<l:gentext key="SeeAlso" text="See Also"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Set Index"/>
+<l:gentext key="SetIndex" text="Set Index"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="step"/>
+<l:gentext key="Step" text="Step"/>
+<l:gentext key="table" text="Table"/>
+<l:gentext key="Table" text="Table"/>
+<l:gentext key="task" text="Task"/>
+<l:gentext key="Task" text="Task"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Warning"/>
+<l:gentext key="warning" text="Warning"/>
+<l:gentext key="WARNING" text="WARNING"/>
+<l:gentext key="and" text="and"/>
+<l:gentext key="by" text="by"/>
+<l:gentext key="Edited" text="Edited"/>
+<l:gentext key="edited" text="Edited"/>
+<l:gentext key="Editedby" text="Edited by"/>
+<l:gentext key="editedby" text="Edited by"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="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="Authors" text="Authors"/>
+<l:gentext key="copyeditor" text="Copy Editor"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer"/>
+<l:gentext key="productioneditor" text="Production Editor"/>
+<l:gentext key="technicaleditor" text="Technical Editor"/>
+<l:gentext key="translator" text="Translator"/>
+<l:gentext key="listofequations" text="List of Equations"/>
+<l:gentext key="ListofEquations" text="List of Equations"/>
+<l:gentext key="ListofExamples" text="List of Examples"/>
+<l:gentext key="listofexamples" text="List of Examples"/>
+<l:gentext key="ListofFigures" text="List of Figures"/>
+<l:gentext key="listoffigures" text="List of Figures"/>
+<l:gentext key="ListofProcedures" text="List of Procedures"/>
+<l:gentext key="listofprocedures" text="List of Procedures"/>
+<l:gentext key="listoftables" text="List of Tables"/>
+<l:gentext key="ListofTables" text="List of Tables"/>
+<l:gentext key="ListofUnknown" text="List of Unknown"/>
+<l:gentext key="listofunknown" text="List of Unknown"/>
+<l:gentext key="nav-home" text="Home"/>
+<l:gentext key="nav-next" text="Next"/>
+<l:gentext key="nav-next-sibling" text="Fast Forward"/>
+<l:gentext key="nav-prev" text="Prev"/>
+<l:gentext key="nav-prev-sibling" text="Fast Backward"/>
+<l:gentext key="nav-up" text="Up"/>
+<l:gentext key="nav-toc" text="ToC"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Appendix %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Chapter %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equation %n. %t"/>
+<l:template name="example" text="Example %n. %t"/>
+<l:template name="figure" text="Figure %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Part %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Table %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Appendix %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Chapter %n. %t"/>
+<l:template name="part" text="Part %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="sect1" text="the section called “%t”"/>
+<l:template name="sect2" text="the section called “%t”"/>
+<l:template name="sect3" text="the section called “%t”"/>
+<l:template name="sect4" text="the section called “%t”"/>
+<l:template name="sect5" text="the section called “%t”"/>
+<l:template name="section" text="the section called “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Appendix %n"/>
+<l:template name="bridgehead" text="Section %n"/>
+<l:template name="chapter" text="Chapter %n"/>
+<l:template name="equation" text="Equation %n"/>
+<l:template name="example" text="Example %n"/>
+<l:template name="figure" text="Figure %n"/>
+<l:template name="part" text="Part %n"/>
+<l:template name="procedure" text="Procedure %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="Section %n"/>
+<l:template name="sect2" text="Section %n"/>
+<l:template name="sect3" text="Section %n"/>
+<l:template name="sect4" text="Section %n"/>
+<l:template name="sect5" text="Section %n"/>
+<l:template name="section" text="Section %n"/>
+<l:template name="table" text="Table %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Appendix %n, %t"/>
+<l:template name="bridgehead" text="Section %n, “%t”"/>
+<l:template name="chapter" text="Chapter %n, %t"/>
+<l:template name="equation" text="Equation %n, “%t”"/>
+<l:template name="example" text="Example %n, “%t”"/>
+<l:template name="figure" text="Figure %n, “%t”"/>
+<l:template name="part" text="Part %n, “%t”"/>
+<l:template name="procedure" text="Procedure %n, “%t”"/>
+<l:template name="productionset" text="Production %n, “%t”"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="sect1" text="Section %n, “%t”"/>
+<l:template name="sect2" text="Section %n, “%t”"/>
+<l:template name="sect3" text="Section %n, “%t”"/>
+<l:template name="sect4" text="Section %n, “%t”"/>
+<l:template name="sect5" text="Section %n, “%t”"/>
+<l:template name="section" text="Section %n, “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+<l:template name="table" text="Table %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" and "/>
+<l:template name="seplast" text=", and "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="See %t"/>
+<l:template name="seealso" text="See Also %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audience: "/>
+<l:template name="MsgLevel" text="Level: "/>
+<l:template name="MsgOrig" text="Origin: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January"/>
+<l:template name="February" text="February"/>
+<l:template name="March" text="March"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="May"/>
+<l:template name="June" text="June"/>
+<l:template name="July" text="July"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="October"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="Monday"/>
+<l:template name="Tuesday" text="Tuesday"/>
+<l:template name="Wednesday" text="Wednesday"/>
+<l:template name="Thursday" text="Thursday"/>
+<l:template name="Friday" text="Friday"/>
+<l:template name="Saturday" text="Saturday"/>
+<l:template name="Sunday" text="Sunday"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Mon"/>
+<l:template name="Tue" text="Tue"/>
+<l:template name="Wed" text="Wed"/>
+<l:template name="Thu" text="Thu"/>
+<l:template name="Fri" text="Fri"/>
+<l:template name="Sat" text="Sat"/>
+<l:template name="Sun" text="Sun"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Available "/>
+<l:template name="acctoo" text="Also available "/>
+<l:template name="onwww" text="from World Wide Web"/>
+<l:template name="oninet" text="from Internet"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/entities.ent b/docs/xsl-generic/common/entities.ent
new file mode 100644
index 00000000..e6b7b8eb
--- /dev/null
+++ b/docs/xsl-generic/common/entities.ent
@@ -0,0 +1,47 @@
+<!-- ********************************************************************
+ $Id: entities.ent 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file contains common entity declarations used for
+ sorting by various templates.
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!ENTITY lowercase "'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;'">
+<!ENTITY uppercase "'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'">
+
+<!ENTITY primary 'normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = ""]))'>
+<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = ""]))'>
+<!ENTITY tertiary 'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = ""]))'>
+
+
+<!ENTITY section '(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]'>
+
+<!ENTITY section.id 'generate-id(&section;)'>
+<!ENTITY sep '" "'>
+
+<!ENTITY scope 'count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))'>
+
+<!ENTITY setup-language-variable '
+<xsl:variable name="language" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="l10n.language"/>
+</xsl:variable>
+
+<xsl:variable name="lowercase" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.input</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:variable name="uppercase" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">normalize.sort.output</xsl:with-param>
+ </xsl:call-template>
+</xsl:variable>
+'>
diff --git a/docs/xsl-generic/common/eo.xml b/docs/xsl-generic/common/eo.xml
new file mode 100644
index 00000000..14a66e15
--- /dev/null
+++ b/docs/xsl-generic/common/eo.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="eo" english-language-name="Esperanto">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/eo.xml -->
+<!-- * -->
+<!-- * E-mail the edited eo.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumo"/>
+<l:gentext key="abstract" text="Resumo"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="R:"/>
+<l:gentext key="Appendix" text="Apendico"/>
+<l:gentext key="appendix" text="Apendico"/>
+<l:gentext key="Article" text="Artikolo"/>
+<l:gentext key="article" text="Artikolo"/>
+<l:gentext key="Author" text="Aŭtoro"/>
+<l:gentext key="Bibliography" text="Bibliografio"/>
+<l:gentext key="bibliography" text="Bibliografio"/>
+<l:gentext key="Book" text="Libro"/>
+<l:gentext key="book" text="Libro"/>
+<l:gentext key="CAUTION" text="ATENTU"/>
+<l:gentext key="Caution" text="Atentu"/>
+<l:gentext key="caution" text="Atentu"/>
+<l:gentext key="Chapter" text="Ĉapitro"/>
+<l:gentext key="chapter" text="Ĉapitro"/>
+<l:gentext key="Colophon" text="Kolofono"/>
+<l:gentext key="colophon" text="Kolofono"/>
+<l:gentext key="Copyright" text="Kopirajto"/>
+<l:gentext key="copyright" text="Kopirajto"/>
+<l:gentext key="Dedication" text="Dediĉo"/>
+<l:gentext key="dedication" text="Dediĉo"/>
+<l:gentext key="Edition" text="Eldono"/>
+<l:gentext key="edition" text="Eldono"/>
+<l:gentext key="Editor" text="Redaktoro"/>
+<l:gentext key="Equation" text="Ekvacio"/>
+<l:gentext key="equation" text="Ekvacio"/>
+<l:gentext key="Example" text="Ekzemplo"/>
+<l:gentext key="example" text="Ekzemplo"/>
+<l:gentext key="Figure" text="Figuro"/>
+<l:gentext key="figure" text="Figuro"/>
+<l:gentext key="Glossary" text="Glosaro"/>
+<l:gentext key="glossary" text="Glosaro"/>
+<l:gentext key="GlossSee" text="Vidu"/>
+<l:gentext key="glosssee" text="Vidu"/>
+<l:gentext key="GlossSeeAlso" text="Vidu ankaŭ"/>
+<l:gentext key="glossseealso" text="Vidu ankaŭ"/>
+<l:gentext key="IMPORTANT" text="GRAVA"/>
+<l:gentext key="important" text="Grava"/>
+<l:gentext key="Important" text="Grava"/>
+<l:gentext key="Index" text="Indekso"/>
+<l:gentext key="index" text="Indekso"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Leĝa Avizo"/>
+<l:gentext key="legalnotice" text="Leĝa Avizo"/>
+<l:gentext key="MsgAud" text="Cela legantaro"/>
+<l:gentext key="msgaud" text="Cela legantaro"/>
+<l:gentext key="MsgLevel" text="Nivelo"/>
+<l:gentext key="msglevel" text="Nivelo"/>
+<l:gentext key="MsgOrig" text="Origino"/>
+<l:gentext key="msgorig" text="Origino"/>
+<l:gentext key="NOTE" text="RIMARKO"/>
+<l:gentext key="Note" text="Rimarko"/>
+<l:gentext key="note" text="Rimarko"/>
+<l:gentext key="Part" text="Parto"/>
+<l:gentext key="part" text="Parto"/>
+<l:gentext key="Preface" text="Antaŭparolo"/>
+<l:gentext key="preface" text="Antaŭparolo"/>
+<l:gentext key="Procedure" text="Procezo"/>
+<l:gentext key="procedure" text="Procezo"/>
+<l:gentext key="ProductionSet" text="Produktaĵo"/>
+<l:gentext key="PubDate" text="Eldona Dato"/>
+<l:gentext key="pubdate" text="Eldona Dato"/>
+<l:gentext key="Published" text="Eldonita "/>
+<l:gentext key="published" text="Eldonita"/>
+<l:gentext key="Publisher" text="Eldonita"/>
+<l:gentext key="Qandadiv" text="Demandoj &amp; Respondoj"/>
+<l:gentext key="qandadiv" text="Demandoj &amp; Respondoj"/>
+<l:gentext key="QandASet" text="Oftaj Demandoj"/>
+<l:gentext key="Question" text="D:"/>
+<l:gentext key="question" text="D:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referenco"/>
+<l:gentext key="reference" text="Referenco"/>
+<l:gentext key="References" text="Referencoj"/>
+<l:gentext key="RefName" text="Nomo"/>
+<l:gentext key="refname" text="Nomo"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Resumo"/>
+<l:gentext key="refsynopsisdiv" text="Resumo"/>
+<l:gentext key="RevHistory" text="Historio de Versioj"/>
+<l:gentext key="revhistory" text="Historio de Versioj"/>
+<l:gentext key="revision" text="Versio"/>
+<l:gentext key="Revision" text="Versio"/>
+<l:gentext key="sect1" text="Sekcio"/>
+<l:gentext key="sect2" text="Sekcio"/>
+<l:gentext key="sect3" text="Sekcio"/>
+<l:gentext key="sect4" text="Sekcio"/>
+<l:gentext key="sect5" text="Sekcio"/>
+<l:gentext key="section" text="Sekcio"/>
+<l:gentext key="Section" text="Sekcio"/>
+<l:gentext key="see" text="vidu"/>
+<l:gentext key="See" text="Vidu"/>
+<l:gentext key="seealso" text="vidu ankaŭ"/>
+<l:gentext key="Seealso" text="Vidu ankaŭ"/>
+<l:gentext key="SeeAlso" text="Vidu Ankaŭ"/>
+<l:gentext key="set" text="Libraro"/>
+<l:gentext key="Set" text="Libraro"/>
+<l:gentext key="setindex" text="Indekso de Libraro"/>
+<l:gentext key="SetIndex" text="Indesko de Libraro"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="flankaĵo"/>
+<l:gentext key="step" text="ŝtupo"/>
+<l:gentext key="Step" text="Ŝtupo"/>
+<l:gentext key="table" text="Tabelo"/>
+<l:gentext key="Table" text="Tabelo"/>
+<l:gentext key="task" text="Tasko"/>
+<l:gentext key="Task" text="Tasko"/>
+<l:gentext key="tip" text="Sugesto"/>
+<l:gentext key="TIP" text="SUGESTO"/>
+<l:gentext key="Tip" text="Sugesto"/>
+<l:gentext key="Warning" text="Averto"/>
+<l:gentext key="warning" text="Averto"/>
+<l:gentext key="WARNING" text="AVERTO"/>
+<l:gentext key="and" text="kaj"/>
+<l:gentext key="by" text="fare de"/>
+<l:gentext key="Edited" text="Redaktita"/>
+<l:gentext key="edited" text="Redaktita"/>
+<l:gentext key="Editedby" text="Redaktita de"/>
+<l:gentext key="editedby" text="Redaktita de"/>
+<l:gentext key="in" text="en"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="neekzistanta elemento"/>
+<l:gentext key="notes" text="Notoj"/>
+<l:gentext key="Notes" text="Notoj"/>
+<l:gentext key="Pgs" text="p."/>
+<l:gentext key="pgs" text="p."/>
+<l:gentext key="Revisedby" text="Reviziita de: "/>
+<l:gentext key="revisedby" text="Reviziita de: "/>
+<l:gentext key="TableNotes" text="Notoj"/>
+<l:gentext key="tablenotes" text="Notoj"/>
+<l:gentext key="TableofContents" text="Enhavo"/>
+<l:gentext key="tableofcontents" text="Enhavo"/>
+<l:gentext key="unexpectedelementname" text="Neantaŭvidita nomo de elemento"/>
+<l:gentext key="unsupported" text="netraktebla"/>
+<l:gentext key="xrefto" text="aludo al"/>
+<l:gentext key="Authors" text="Aŭtoroj"/>
+<l:gentext key="copyeditor" text="Provredaktinto"/>
+<l:gentext key="graphicdesigner" text="Grafikisto"/>
+<l:gentext key="productioneditor" text="Produkta Redaktoro"/>
+<l:gentext key="technicaleditor" text="Teknika Redaktoro"/>
+<l:gentext key="translator" text="Tradukisto"/>
+<l:gentext key="listofequations" text="Listo de Ekvacioj"/>
+<l:gentext key="ListofEquations" text="Listo de Ekvacioj"/>
+<l:gentext key="ListofExamples" text="Listo de Ekzemploj"/>
+<l:gentext key="listofexamples" text="Listo de Ekzemploj"/>
+<l:gentext key="ListofFigures" text="Listo de Figuroj"/>
+<l:gentext key="listoffigures" text="Listo de Figuroj"/>
+<l:gentext key="ListofProcedures" text="Listo de Procedoj"/>
+<l:gentext key="listofprocedures" text="Listo de Procedoj"/>
+<l:gentext key="listoftables" text="Listo de Tabeloj"/>
+<l:gentext key="ListofTables" text="Listo de Tabeloj"/>
+<l:gentext key="ListofUnknown" text="Listo de Nesciatoj"/>
+<l:gentext key="listofunknown" text="Listo de Nesciatoj"/>
+<l:gentext key="nav-home" text="Hejmen"/>
+<l:gentext key="nav-next" text="Sekven"/>
+<l:gentext key="nav-next-sibling" text="Pli sekven"/>
+<l:gentext key="nav-prev" text="Antaŭen"/>
+<l:gentext key="nav-prev-sibling" text="Pli antaŭen"/>
+<l:gentext key="nav-up" text="Supren"/>
+<l:gentext key="nav-toc" text="Enhavlisten"/>
+<l:gentext key="Draft" text="Malneto"/>
+<l:gentext key="above" text="supra"/>
+<l:gentext key="below" text="suba"/>
+<l:gentext key="sectioncalled" text="la sekcio nomata"/>
+<l:gentext key="index symbols" text="Simboloj"/>
+<l:gentext key="lowercase.alpha" text="abcĉdefgĝhĥijĵklmnopqrsŝtuŭvyz"/>
+<l:gentext key="uppercase.alpha" text="ABCĈDEFGĜHĤIJĴKLMNOPQRSŜTUŬVYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apendico %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Ĉapitro %n. %t&quot;"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ekvacio %n. %t"/>
+<l:template name="example" text="Ekzemplo %n. %t"/>
+<l:template name="figure" text="Figuro %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parto %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procezo %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produktaĵo %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabelo %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apendico %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Ĉapitro %n. %t"/>
+<l:template name="part" text="Parto %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Demando %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Demando %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (paĝo %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(paĝo %p)"/>
+<l:template name="docname" text=" en %o"/>
+<l:template name="docnamelong" text=" en la dokumento titolata %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Paĝo %p"/>
+<l:template name="bridgehead" text="la sekcio nomata “%t”"/>
+<l:template name="refsection" text="la sekcio nomata “%t”"/>
+<l:template name="refsect1" text="la sekcio nomata “%t”"/>
+<l:template name="refsect2" text="la sekcio nomata “%t”"/>
+<l:template name="refsect3" text="la sekcio nomata “%t”"/>
+<l:template name="sect1" text="la sekcio nomata “%t”"/>
+<l:template name="sect2" text="la sekcio nomata “%t”"/>
+<l:template name="sect3" text="la sekcio nomata “%t”"/>
+<l:template name="sect4" text="la sekcio nomata “%t”"/>
+<l:template name="sect5" text="la sekcio nomata “%t”"/>
+<l:template name="section" text="la sekcio nomata “%t”"/>
+<l:template name="simplesect" text="la sekcio nomata “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apendico %n"/>
+<l:template name="bridgehead" text="Sekcio %n"/>
+<l:template name="chapter" text="Ĉapitro %n"/>
+<l:template name="equation" text="Ekvacio %n"/>
+<l:template name="example" text="Ekzemplo %n"/>
+<l:template name="figure" text="Figuro %n"/>
+<l:template name="part" text="Parto %n"/>
+<l:template name="procedure" text="Procezo %n"/>
+<l:template name="productionset" text="Produktaĵo %n"/>
+<l:template name="qandadiv" text="Demandoj &amp; Respondoj %n"/>
+<l:template name="qandaentry" text="D: %n"/>
+<l:template name="question" text="D: %n"/>
+<l:template name="sect1" text="Sekcio %n"/>
+<l:template name="sect2" text="Sekcio %n"/>
+<l:template name="sect3" text="Sekcio %n"/>
+<l:template name="sect4" text="Sekcio %n"/>
+<l:template name="sect5" text="Sekcio %n"/>
+<l:template name="section" text="Sekcio %n"/>
+<l:template name="table" text="Tabelo %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apendico %n, %t"/>
+<l:template name="bridgehead" text="Sekcio %n, “%t”"/>
+<l:template name="chapter" text="Ĉapitro %n, %t"/>
+<l:template name="equation" text="Ekvacio %n, “%t”"/>
+<l:template name="example" text="Ekzemplo %n, “%t”"/>
+<l:template name="figure" text="Figuro %n, “%t”"/>
+<l:template name="part" text="Parto %n, “%t”"/>
+<l:template name="procedure" text="Procezo %n, “%t”"/>
+<l:template name="productionset" text="Produktaĵo %n, “%t”"/>
+<l:template name="qandadiv" text="Demandoj &amp; Respondoj %n, “%t”"/>
+<l:template name="refsect1" text="la sekcio nomata “%t”"/>
+<l:template name="refsect2" text="la sekcio nomata “%t”"/>
+<l:template name="refsect3" text="la sekcio nomata “%t”"/>
+<l:template name="refsection" text="la sekcio nomata “%t”"/>
+<l:template name="sect1" text="Sekcio %n, “%t”"/>
+<l:template name="sect2" text="Sekcio %n, “%t”"/>
+<l:template name="sect3" text="Sekcio %n, “%t”"/>
+<l:template name="sect4" text="Sekcio %n, “%t”"/>
+<l:template name="sect5" text="Sekcio %n, “%t”"/>
+<l:template name="section" text="Sekcio %n, “%t”"/>
+<l:template name="simplesect" text="la sekcio nomata “%t”"/>
+<l:template name="table" text="Tabelo %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" kaj "/>
+<l:template name="seplast" text=", kaj "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vidu %t"/>
+<l:template name="seealso" text="Vidu ankaŭ %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Cela legantaro: "/>
+<l:template name="MsgLevel" text="Nivelo: "/>
+<l:template name="MsgOrig" text="Origino: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Difino: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="januaro"/>
+<l:template name="February" text="februaro"/>
+<l:template name="March" text="marto"/>
+<l:template name="April" text="aprilo"/>
+<l:template name="May" text="majo"/>
+<l:template name="June" text="junio"/>
+<l:template name="July" text="julio"/>
+<l:template name="August" text="aŭgusto"/>
+<l:template name="September" text="septembro"/>
+<l:template name="October" text="oktobro"/>
+<l:template name="November" text="novembro"/>
+<l:template name="December" text="decembro"/>
+<l:template name="Monday" text="lundo"/>
+<l:template name="Tuesday" text="mardo"/>
+<l:template name="Wednesday" text="merkredo"/>
+<l:template name="Thursday" text="ĵaudo"/>
+<l:template name="Friday" text="vendredo"/>
+<l:template name="Saturday" text="sabato"/>
+<l:template name="Sunday" text="dimanĉo"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="apr"/>
+<l:template name="May" text="maj"/>
+<l:template name="Jun" text="jun"/>
+<l:template name="Jul" text="jul"/>
+<l:template name="Aug" text="aŭg"/>
+<l:template name="Sep" text="sep"/>
+<l:template name="Oct" text="okt"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dec"/>
+<l:template name="Mon" text="lun"/>
+<l:template name="Tue" text="mar"/>
+<l:template name="Wed" text="mer"/>
+<l:template name="Thu" text="ĵau"/>
+<l:template name="Fri" text="ven"/>
+<l:template name="Sat" text="sab"/>
+<l:template name="Sun" text="dim"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 Esperanto"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (red.)"/>
+<l:template name="primary.many" text=", k.a."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [referencita "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Havebla "/>
+<l:template name="acctoo" text="Ankaŭ havebla "/>
+<l:template name="onwww" text="de la Tut-Tera Teksaĵo"/>
+<l:template name="oninet" text="de la Interreto"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/es.xml b/docs/xsl-generic/common/es.xml
new file mode 100644
index 00000000..11592e1e
--- /dev/null
+++ b/docs/xsl-generic/common/es.xml
@@ -0,0 +1,670 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="es" english-language-name="Spanish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/es.xml -->
+<!-- * -->
+<!-- * E-mail the edited es.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumen"/>
+<l:gentext key="abstract" text="resumen"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="r:"/>
+<l:gentext key="Appendix" text="Apéndice"/>
+<l:gentext key="appendix" text="apéndice"/>
+<l:gentext key="Article" text="Artículo"/>
+<l:gentext key="article" text="artículo"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografía"/>
+<l:gentext key="bibliography" text="bibliografía"/>
+<l:gentext key="Book" text="Libro"/>
+<l:gentext key="book" text="libro"/>
+<l:gentext key="CAUTION" text="ATENCIÓN"/>
+<l:gentext key="Caution" text="Atención"/>
+<l:gentext key="caution" text="atención"/>
+<l:gentext key="Chapter" text="Capítulo"/>
+<l:gentext key="chapter" text="capítulo"/>
+<l:gentext key="Colophon" text="Colofón"/>
+<l:gentext key="colophon" text="colofón"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="copyright"/>
+<l:gentext key="Dedication" text="Dedicatoria"/>
+<l:gentext key="dedication" text="dedicatoria"/>
+<l:gentext key="Edition" text="Edición"/>
+<l:gentext key="edition" text="edición"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ecuación"/>
+<l:gentext key="equation" text="ecuación"/>
+<l:gentext key="Example" text="Ejemplo"/>
+<l:gentext key="example" text="ejemplo"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="figura"/>
+<l:gentext key="Glossary" text="Glosario"/>
+<l:gentext key="glossary" text="glosario"/>
+<l:gentext key="GlossSee" text="Ver"/>
+<l:gentext key="glosssee" text="ver"/>
+<l:gentext key="GlossSeeAlso" text="Ver también"/>
+<l:gentext key="glossseealso" text="ver también"/>
+<l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+<l:gentext key="important" text="importante"/>
+<l:gentext key="Important" text="Importante"/>
+<l:gentext key="Index" text="Índice"/>
+<l:gentext key="index" text="índice"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Aviso Legal"/>
+<l:gentext key="legalnotice" text="aviso legal"/>
+<l:gentext key="MsgAud" text="Audiencia"/>
+<l:gentext key="msgaud" text="audiencia"/>
+<l:gentext key="MsgLevel" text="Nivel"/>
+<l:gentext key="msglevel" text="nivel"/>
+<l:gentext key="MsgOrig" text="Origen"/>
+<l:gentext key="msgorig" text="origen"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="nota"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="parte"/>
+<l:gentext key="Preface" text="Prefacio"/>
+<l:gentext key="preface" text="prefacio"/>
+<l:gentext key="Procedure" text="Procedimiento"/>
+<l:gentext key="procedure" text="procedimiento"/>
+<l:gentext key="ProductionSet" text="Producción"/>
+<l:gentext key="PubDate" text="Fecha de publicación"/>
+<l:gentext key="pubdate" text="fecha de publicación"/>
+<l:gentext key="Published" text="Publicado"/>
+<l:gentext key="published" text="publicado"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="P y R"/>
+<l:gentext key="qandadiv" text="P y R"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="p:"/>
+<l:gentext key="RefEntry" text="Entrada de referencia"/>
+<l:gentext key="refentry" text="entrada de referencia"/>
+<l:gentext key="Reference" text="Referencia"/>
+<l:gentext key="reference" text="referencia"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nombre de referencia"/>
+<l:gentext key="refname" text="nombre de referencia"/>
+<l:gentext key="RefSection" text="Sección de referencia"/>
+<l:gentext key="refsection" text="sección de referencia"/>
+<l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+<l:gentext key="refsynopsisdiv" text="sinopsis"/>
+<l:gentext key="RevHistory" text="Historial de revisiones"/>
+<l:gentext key="revhistory" text="Historial de revisiones"/>
+<l:gentext key="revision" text="revisión"/>
+<l:gentext key="Revision" text="Revisión"/>
+<l:gentext key="sect1" text="Sección"/>
+<l:gentext key="sect2" text="Sección"/>
+<l:gentext key="sect3" text="Sección"/>
+<l:gentext key="sect4" text="Sección"/>
+<l:gentext key="sect5" text="Sección"/>
+<l:gentext key="section" text="sección"/>
+<l:gentext key="Section" text="Sección"/>
+<l:gentext key="see" text="ver"/>
+<l:gentext key="See" text="Ver"/>
+<l:gentext key="seealso" text="ver también"/>
+<l:gentext key="Seealso" text="Ver también"/>
+<l:gentext key="SeeAlso" text="Ver También"/>
+<l:gentext key="set" text="conjunto"/>
+<l:gentext key="Set" text="Conjunto"/>
+<l:gentext key="setindex" text="índice del conjunto"/>
+<l:gentext key="SetIndex" text="Índice del Conjunto"/>
+<l:gentext key="Sidebar" text="Barra lateral"/>
+<l:gentext key="sidebar" text="barra lateral"/>
+<l:gentext key="step" text="paso"/>
+<l:gentext key="Step" text="Paso"/>
+<l:gentext key="table" text="tabla"/>
+<l:gentext key="Table" text="Tabla"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<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="Págs."/>
+<l:gentext key="pgs" text="págs."/>
+<l:gentext key="Revisedby" text="Revisado por: "/>
+<l:gentext key="revisedby" text="revisado por: "/>
+<l:gentext key="TableNotes" text="Notas de tabla"/>
+<l:gentext key="tablenotes" text="notas de tabla"/>
+<l:gentext key="TableofContents" text="Tabla de contenidos"/>
+<l:gentext key="tableofcontents" text="tabla de contenidos"/>
+<l:gentext key="unexpectedelementname" text="nombre de elemento inesperado"/>
+<l:gentext key="unsupported" text="no soportado"/>
+<l:gentext key="xrefto" text="referencia a"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="lista de ecuaciones"/>
+<l:gentext key="ListofEquations" text="Lista de ecuaciones"/>
+<l:gentext key="ListofExamples" text="Lista de ejemplos"/>
+<l:gentext key="listofexamples" text="lista de ejemplos"/>
+<l:gentext key="ListofFigures" text="Lista de figuras"/>
+<l:gentext key="listoffigures" text="lista de figuras"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="lista de tablas"/>
+<l:gentext key="ListofTables" text="Lista de tablas"/>
+<l:gentext key="ListofUnknown" text="Lista de desconocido"/>
+<l:gentext key="listofunknown" text="lista de desconocido"/>
+<l:gentext key="nav-home" text="Inicio"/>
+<l:gentext key="nav-next" text="Siguiente"/>
+<l:gentext key="nav-next-sibling" text="Avanzar"/>
+<l:gentext key="nav-prev" text="Anterior"/>
+<l:gentext key="nav-prev-sibling" text="Retroceder"/>
+<l:gentext key="nav-up" text="Subir"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Borrador"/>
+<l:gentext key="above" text="arriba"/>
+<l:gentext key="below" text="abajo"/>
+<l:gentext key="sectioncalled" text="sección llamada"/>
+<l:gentext key="index symbols" text="Símbolos"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzáéíóúñ"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apéndice %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ecuación %n. %t"/>
+<l:template name="example" text="Ejemplo %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedimiento %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Producción %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabla %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apéndice %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apéndice %n"/>
+<l:template name="bridgehead" text="Sección %n"/>
+<l:template name="chapter" text="Capítulo %n"/>
+<l:template name="equation" text="Ecuación %n"/>
+<l:template name="example" text="Ejemplo %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedimiento %n"/>
+<l:template name="productionset" text="Producción %n"/>
+<l:template name="qandadiv" text="P y R %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Sección %n"/>
+<l:template name="sect2" text="Sección %n"/>
+<l:template name="sect3" text="Sección %n"/>
+<l:template name="sect4" text="Sección %n"/>
+<l:template name="sect5" text="Sección %n"/>
+<l:template name="section" text="Sección %n"/>
+<l:template name="table" text="Tabla %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apéndice %n, %t"/>
+<l:template name="bridgehead" text="Sección %n, “%t”"/>
+<l:template name="chapter" text="Capítulo %n, %t"/>
+<l:template name="equation" text="Ecuación %n, “%t”"/>
+<l:template name="example" text="Ejemplo %n, “%t”"/>
+<l:template name="figure" text="Figura %n, “%t”"/>
+<l:template name="part" text="Parte %n, “%t”"/>
+<l:template name="procedure" text="Procedimiento %n, “%t”"/>
+<l:template name="productionset" text="Producción %n, “%t”"/>
+<l:template name="qandadiv" text="P y R %n, “%t”"/>
+<l:template name="refsect1" text="sección llamada “%t”"/>
+<l:template name="refsect2" text="sección llamada “%t”"/>
+<l:template name="refsect3" text="sección llamada “%t”"/>
+<l:template name="refsection" text="sección llamada “%t”"/>
+<l:template name="sect1" text="Sección %n, “%t”"/>
+<l:template name="sect2" text="Sección %n, “%t”"/>
+<l:template name="sect3" text="Sección %n, “%t”"/>
+<l:template name="sect4" text="Sección %n, “%t”"/>
+<l:template name="sect5" text="Sección %n, “%t”"/>
+<l:template name="section" text="Sección %n, “%t”"/>
+<l:template name="simplesect" text="sección llamada “%t”"/>
+<l:template name="table" text="Tabla %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" y "/>
+<l:template name="seplast" text=", y "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Ver %t"/>
+<l:template name="seealso" text="Ver también %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiencia: "/>
+<l:template name="MsgLevel" text="Nivel: "/>
+<l:template name="MsgOrig" text="Origen: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040a Spanish (Traditional Sort)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Símbolos</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">á</l:l>
+<l:l i="1">Á</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">CH</l:l>
+<l:l i="4">ch</l:l>
+<l:l i="5">D</l:l>
+<l:l i="5">d</l:l>
+<l:l i="6">E</l:l>
+<l:l i="6">e</l:l>
+<l:l i="6">É</l:l>
+<l:l i="6">é</l:l>
+<l:l i="7">F</l:l>
+<l:l i="7">f</l:l>
+<l:l i="8">G</l:l>
+<l:l i="8">g</l:l>
+<l:l i="9">H</l:l>
+<l:l i="9">h</l:l>
+<l:l i="10">I</l:l>
+<l:l i="10">i</l:l>
+<l:l i="10">Í</l:l>
+<l:l i="10">í</l:l>
+<l:l i="11">J</l:l>
+<l:l i="11">j</l:l>
+<l:l i="12">K</l:l>
+<l:l i="12">k</l:l>
+<l:l i="13">L</l:l>
+<l:l i="13">l</l:l>
+<l:l i="14">LL</l:l>
+<l:l i="14">ll</l:l>
+<l:l i="15">M</l:l>
+<l:l i="15">m</l:l>
+<l:l i="16">N</l:l>
+<l:l i="16">n</l:l>
+<l:l i="17">Ñ</l:l>
+<l:l i="17">ñ</l:l>
+<l:l i="18">O</l:l>
+<l:l i="18">o</l:l>
+<l:l i="18">Ó</l:l>
+<l:l i="18">ó</l:l>
+<l:l i="19">P</l:l>
+<l:l i="19">p</l:l>
+<l:l i="20">Q</l:l>
+<l:l i="20">q</l:l>
+<l:l i="21">R</l:l>
+<l:l i="21">r</l:l>
+<l:l i="22">S</l:l>
+<l:l i="22">s</l:l>
+<l:l i="23">T</l:l>
+<l:l i="23">t</l:l>
+<l:l i="24">U</l:l>
+<l:l i="24">u</l:l>
+<l:l i="24">Ú</l:l>
+<l:l i="24">ú</l:l>
+<l:l i="25">V</l:l>
+<l:l i="25">v</l:l>
+<l:l i="26">W</l:l>
+<l:l i="26">w</l:l>
+<l:l i="27">X</l:l>
+<l:l i="27">x</l:l>
+<l:l i="28">Y</l:l>
+<l:l i="28">y</l:l>
+<l:l i="29">Z</l:l>
+<l:l i="29">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/et.xml b/docs/xsl-generic/common/et.xml
new file mode 100644
index 00000000..e63621f7
--- /dev/null
+++ b/docs/xsl-generic/common/et.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="et" english-language-name="Estonian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/et.xml -->
+<!-- * -->
+<!-- * E-mail the edited et.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Ülevaade"/>
+<l:gentext key="abstract" text="Ülevaade"/>
+<l:gentext key="Answer" text="V:"/>
+<l:gentext key="answer" text="V:"/>
+<l:gentext key="Appendix" text="Lisa"/>
+<l:gentext key="appendix" text="lisa"/>
+<l:gentext key="Article" text="Artikkel"/>
+<l:gentext key="article" text="Artikkel"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliograafia"/>
+<l:gentext key="bibliography" text="Bibliograafia"/>
+<l:gentext key="Book" text="Raamat"/>
+<l:gentext key="book" text="Raamat"/>
+<l:gentext key="CAUTION" text="ETTEVAATUST"/>
+<l:gentext key="Caution" text="Ettevaatust"/>
+<l:gentext key="caution" text="Ettevaatust"/>
+<l:gentext key="Chapter" text="Peatükk"/>
+<l:gentext key="chapter" text="peatükk"/>
+<l:gentext key="Colophon" text="Lõpumärgis"/>
+<l:gentext key="colophon" text="Lõpumärgis"/>
+<l:gentext key="Copyright" text="Autoriõigus"/>
+<l:gentext key="copyright" text="Autoriõigus"/>
+<l:gentext key="Dedication" text="Pühendus"/>
+<l:gentext key="dedication" text="Pühendus"/>
+<l:gentext key="Edition" text="Väljaanne"/>
+<l:gentext key="edition" text="Väljaanne"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Valem"/>
+<l:gentext key="equation" text="Valem"/>
+<l:gentext key="Example" text="Näide"/>
+<l:gentext key="example" text="Näide"/>
+<l:gentext key="Figure" text="Joonis"/>
+<l:gentext key="figure" text="Joonis"/>
+<l:gentext key="Glossary" text="Sõnastik"/>
+<l:gentext key="glossary" text="Sõnastik"/>
+<l:gentext key="GlossSee" text="Vt."/>
+<l:gentext key="glosssee" text="Vt."/>
+<l:gentext key="GlossSeeAlso" text="Vt. ka"/>
+<l:gentext key="glossseealso" text="Vt. ka"/>
+<l:gentext key="IMPORTANT" text="OLULINE"/>
+<l:gentext key="important" text="Oluline"/>
+<l:gentext key="Important" text="Oluline"/>
+<l:gentext key="Index" text="Aineregister"/>
+<l:gentext key="index" text="Aineregister"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Autoriõiguse märge"/>
+<l:gentext key="legalnotice" text="Autoriõiguse märge"/>
+<l:gentext key="MsgAud" text="Auditoorium"/>
+<l:gentext key="msgaud" text="Auditoorium"/>
+<l:gentext key="MsgLevel" text="Tase"/>
+<l:gentext key="msglevel" text="Tase"/>
+<l:gentext key="MsgOrig" text="Algallikas"/>
+<l:gentext key="msgorig" text="Algallikas"/>
+<l:gentext key="NOTE" text="MÄRKUS"/>
+<l:gentext key="Note" text="Märkus"/>
+<l:gentext key="note" text="Märkus"/>
+<l:gentext key="Part" text="Osa"/>
+<l:gentext key="part" text="Osa"/>
+<l:gentext key="Preface" text="Eessõna"/>
+<l:gentext key="preface" text="Eessõna"/>
+<l:gentext key="Procedure" text="Protseduur"/>
+<l:gentext key="procedure" text="Protseduur"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Avaldatud"/>
+<l:gentext key="published" text="Avaldatud"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="K ja V"/>
+<l:gentext key="qandadiv" text="K ja V"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="K:"/>
+<l:gentext key="question" text="K:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Viide"/>
+<l:gentext key="reference" text="Viide"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nimi"/>
+<l:gentext key="refname" text="Nimi"/>
+<l:gentext key="RefSection" text="Lõik"/>
+<l:gentext key="refsection" text="Lõik"/>
+<l:gentext key="RefSynopsisDiv" text="Sünopsis"/>
+<l:gentext key="refsynopsisdiv" text="Sünopsis"/>
+<l:gentext key="RevHistory" text="Vigade paranduste ajalugu"/>
+<l:gentext key="revhistory" text="Vigade paranduste ajalugu"/>
+<l:gentext key="revision" text="Vigade parandus"/>
+<l:gentext key="Revision" text="Vigade parandus"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="lõik"/>
+<l:gentext key="Section" text="Sektsioon"/>
+<l:gentext key="see" text="Vt."/>
+<l:gentext key="See" text="Vt."/>
+<l:gentext key="seealso" text="Vt. ka"/>
+<l:gentext key="Seealso" text="Vt. ka"/>
+<l:gentext key="SeeAlso" text="Vt. ka"/>
+<l:gentext key="set" text="Sea"/>
+<l:gentext key="Set" text="Sea"/>
+<l:gentext key="setindex" text="Sea indeks"/>
+<l:gentext key="SetIndex" text="Sea indeks"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="külgriba"/>
+<l:gentext key="step" text="samm"/>
+<l:gentext key="Step" text="Samm"/>
+<l:gentext key="table" text="Tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Vihje"/>
+<l:gentext key="TIP" text="VIHJE"/>
+<l:gentext key="Tip" text="Vihje"/>
+<l:gentext key="Warning" text="Hoiatus"/>
+<l:gentext key="warning" text="Hoiatus"/>
+<l:gentext key="WARNING" text="HOIATUS"/>
+<l:gentext key="and" text="ja"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Redaktsioon"/>
+<l:gentext key="edited" text="Redaktsioon"/>
+<l:gentext key="Editedby" text="Redaktsiooni autor(id)"/>
+<l:gentext key="editedby" text="Redaktsiooni autor(id)"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="mitte eksisteeriv element"/>
+<l:gentext key="notes" text="Märkused"/>
+<l:gentext key="Notes" text="Märkused"/>
+<l:gentext key="Pgs" text="Lk."/>
+<l:gentext key="pgs" text="Lk."/>
+<l:gentext key="Revisedby" text="Üle vaadanud: "/>
+<l:gentext key="revisedby" text="Üle vaadanud: "/>
+<l:gentext key="TableNotes" text="Märkused"/>
+<l:gentext key="tablenotes" text="Märkused"/>
+<l:gentext key="TableofContents" text="Sisukord"/>
+<l:gentext key="tableofcontents" text="Sisukord"/>
+<l:gentext key="unexpectedelementname" text="Ootamatu elemendi nimi"/>
+<l:gentext key="unsupported" text="toetuseta"/>
+<l:gentext key="xrefto" text="viide"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Valemite nimekiri"/>
+<l:gentext key="ListofEquations" text="Valemite nimekiri"/>
+<l:gentext key="ListofExamples" text="Näidete nimekiri"/>
+<l:gentext key="listofexamples" text="Näidete nimekiri"/>
+<l:gentext key="ListofFigures" text="Jooniste nimekiri"/>
+<l:gentext key="listoffigures" text="Jooniste nimekiri"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Tabelite nimekiri"/>
+<l:gentext key="ListofTables" text="Tabelite nimekiri"/>
+<l:gentext key="ListofUnknown" text="Tundmatute nimekiri"/>
+<l:gentext key="listofunknown" text="Tundmatute nimekiri"/>
+<l:gentext key="nav-home" text="Koju"/>
+<l:gentext key="nav-next" text="Järgmine"/>
+<l:gentext key="nav-next-sibling" text="Kiiresti edasi"/>
+<l:gentext key="nav-prev" text="Eelmine"/>
+<l:gentext key="nav-prev-sibling" text="Kiiresti tagasi"/>
+<l:gentext key="nav-up" text="Üles"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Lisa %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Peatükk %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Valem %n. %t"/>
+<l:template name="example" text="Näide %n. %t"/>
+<l:template name="figure" text="Joonis %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Osa %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Protseduur %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Lisa %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Peatükk %n. %t"/>
+<l:template name="part" text="Osa %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="V: %n"/>
+<l:template name="appendix" text="Lisa %n"/>
+<l:template name="bridgehead" text="Sektsioon %n"/>
+<l:template name="chapter" text="Peatükk %n"/>
+<l:template name="equation" text="Valem %n"/>
+<l:template name="example" text="Näide %n"/>
+<l:template name="figure" text="Joonis %n"/>
+<l:template name="part" text="Osa %n"/>
+<l:template name="procedure" text="Protseduur %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="K ja V %n"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="sect1" text="Sektsioon %n"/>
+<l:template name="sect2" text="Sektsioon %n"/>
+<l:template name="sect3" text="Sektsioon %n"/>
+<l:template name="sect4" text="Sektsioon %n"/>
+<l:template name="sect5" text="Sektsioon %n"/>
+<l:template name="section" text="Sektsioon %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Lisa %n, %t"/>
+<l:template name="bridgehead" text="Sektsioon %n, “%t”"/>
+<l:template name="chapter" text="Peatükk %n, %t"/>
+<l:template name="equation" text="Valem %n, “%t”"/>
+<l:template name="example" text="Näide %n, “%t”"/>
+<l:template name="figure" text="Joonis %n, “%t”"/>
+<l:template name="part" text="Osa %n, “%t”"/>
+<l:template name="procedure" text="Protseduur %n, “%t”"/>
+<l:template name="productionset" text="Production %n, “%t”"/>
+<l:template name="qandadiv" text="K ja V %n, “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="sect1" text="Sektsioon %n, “%t”"/>
+<l:template name="sect2" text="Sektsioon %n, “%t”"/>
+<l:template name="sect3" text="Sektsioon %n, “%t”"/>
+<l:template name="sect4" text="Sektsioon %n, “%t”"/>
+<l:template name="sect5" text="Sektsioon %n, “%t”"/>
+<l:template name="section" text="Sektsioon %n, “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+<l:template name="table" text="Tabel %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ja "/>
+<l:template name="seplast" text=", ja "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vt. %t"/>
+<l:template name="seealso" text="Vt. ka %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Auditoorium: "/>
+<l:template name="MsgLevel" text="Tase: "/>
+<l:template name="MsgOrig" text="Algallikas: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0425 Estonian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/eu.xml b/docs/xsl-generic/common/eu.xml
new file mode 100644
index 00000000..f58f0d4d
--- /dev/null
+++ b/docs/xsl-generic/common/eu.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="eu" english-language-name="Basque">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/eu.xml -->
+<!-- * -->
+<!-- * E-mail the edited eu.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Laburpena"/>
+<l:gentext key="abstract" text="Laburpena"/>
+<l:gentext key="Answer" text="E:"/>
+<l:gentext key="answer" text="E:"/>
+<l:gentext key="Appendix" text="Eranskina"/>
+<l:gentext key="appendix" text="eranskina"/>
+<l:gentext key="Article" text="Artikulua"/>
+<l:gentext key="article" text="Artikulua"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Liburua"/>
+<l:gentext key="book" text="Liburua"/>
+<l:gentext key="CAUTION" text="KONTUZ"/>
+<l:gentext key="Caution" text="Kontuz"/>
+<l:gentext key="caution" text="Kontuz"/>
+<l:gentext key="Chapter" text="Atala"/>
+<l:gentext key="chapter" text="atala"/>
+<l:gentext key="Colophon" text="Azken ohar"/>
+<l:gentext key="colophon" text="Azken ohar"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Eskaintza"/>
+<l:gentext key="dedication" text="Eskaintza"/>
+<l:gentext key="Edition" text="Edizioa"/>
+<l:gentext key="edition" text="Edizioa"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ekuazioa"/>
+<l:gentext key="equation" text="Ekuazioa"/>
+<l:gentext key="Example" text="Adibidea"/>
+<l:gentext key="example" text="Adibidea"/>
+<l:gentext key="Figure" text="Irudia"/>
+<l:gentext key="figure" text="Irudia"/>
+<l:gentext key="Glossary" text="Glosarioa"/>
+<l:gentext key="glossary" text="Glosarioa"/>
+<l:gentext key="GlossSee" text="Ikus"/>
+<l:gentext key="glosssee" text="Ikus"/>
+<l:gentext key="GlossSeeAlso" text="Ikus baita ere"/>
+<l:gentext key="glossseealso" text="Ikus baita ere"/>
+<l:gentext key="IMPORTANT" text="GARRANTZITSUA"/>
+<l:gentext key="important" text="Garrantzitsua"/>
+<l:gentext key="Important" text="Garrantzitsua"/>
+<l:gentext key="Index" text="Indizea"/>
+<l:gentext key="index" text="Indizea"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Legezko abisua"/>
+<l:gentext key="legalnotice" text="Legezko abisua"/>
+<l:gentext key="MsgAud" text="Audientzia"/>
+<l:gentext key="msgaud" text="Audientzia"/>
+<l:gentext key="MsgLevel" text="Maila"/>
+<l:gentext key="msglevel" text="Maila"/>
+<l:gentext key="MsgOrig" text="Jatorria"/>
+<l:gentext key="msgorig" text="Jatorria"/>
+<l:gentext key="NOTE" text="OHARRA"/>
+<l:gentext key="Note" text="Oharra"/>
+<l:gentext key="note" text="Oharra"/>
+<l:gentext key="Part" text="Zatia"/>
+<l:gentext key="part" text="Zatia"/>
+<l:gentext key="Preface" text="Hitzaurrea"/>
+<l:gentext key="preface" text="Hitzaurrea"/>
+<l:gentext key="Procedure" text="Prozedura"/>
+<l:gentext key="procedure" text="Prozedura"/>
+<l:gentext key="ProductionSet" text="Ekoizpena"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Argitaratua"/>
+<l:gentext key="published" text="Argitaratua"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Galdera eta E"/>
+<l:gentext key="qandadiv" text="Galdera eta E"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Galdera"/>
+<l:gentext key="question" text="galdera"/>
+<l:gentext key="RefEntry" text="Sarrera"/>
+<l:gentext key="refentry" text="Sarrera"/>
+<l:gentext key="Reference" text="Erreferentzia"/>
+<l:gentext key="reference" text="Erreferentzia"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Izena"/>
+<l:gentext key="refname" text="Izena"/>
+<l:gentext key="RefSection" text="Sekzioa"/>
+<l:gentext key="refsection" text="sekzioa"/>
+<l:gentext key="RefSynopsisDiv" text="Laburpena"/>
+<l:gentext key="refsynopsisdiv" text="Laburpena"/>
+<l:gentext key="RevHistory" text="Berrikuspenaren historia"/>
+<l:gentext key="revhistory" text="Berrikuspenaren historia"/>
+<l:gentext key="revision" text="Berrikuspena"/>
+<l:gentext key="Revision" text="Berrikuspena"/>
+<l:gentext key="sect1" text="Atala"/>
+<l:gentext key="sect2" text="Atala"/>
+<l:gentext key="sect3" text="Atala"/>
+<l:gentext key="sect4" text="Atala"/>
+<l:gentext key="sect5" text="Atala"/>
+<l:gentext key="section" text="Atala"/>
+<l:gentext key="Section" text="Atala"/>
+<l:gentext key="see" text="Ikus"/>
+<l:gentext key="See" text="Ikus"/>
+<l:gentext key="seealso" text="Ikus baita ere"/>
+<l:gentext key="Seealso" text="Ikus baita ere"/>
+<l:gentext key="SeeAlso" text="Ikus baita ere"/>
+<l:gentext key="set" text="Konfiguratu"/>
+<l:gentext key="Set" text="Konfiguratu"/>
+<l:gentext key="setindex" text="Konfiguratu indizea"/>
+<l:gentext key="SetIndex" text="Konfiguratu indizea"/>
+<l:gentext key="Sidebar" text="Alboko barra"/>
+<l:gentext key="sidebar" text="alboko barra"/>
+<l:gentext key="step" text="urratsa"/>
+<l:gentext key="Step" text="Urratsa"/>
+<l:gentext key="table" text="Taula"/>
+<l:gentext key="Table" text="Taula"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Iradokizuna"/>
+<l:gentext key="TIP" text="IRADOKIZUNA"/>
+<l:gentext key="Tip" text="Iradokizuna"/>
+<l:gentext key="Warning" text="Abisua"/>
+<l:gentext key="warning" text="Abisua"/>
+<l:gentext key="WARNING" text="ABISUA"/>
+<l:gentext key="and" text="eta"/>
+<l:gentext key="by" text="Honek"/>
+<l:gentext key="Edited" text="editatua"/>
+<l:gentext key="edited" text="editatua"/>
+<l:gentext key="Editedby" text="Honek editatua"/>
+<l:gentext key="editedby" text="Honek editatua"/>
+<l:gentext key="in" text="non"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="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="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Ekuazioen zerrenda"/>
+<l:gentext key="ListofEquations" text="Ekuazioen zerrenda"/>
+<l:gentext key="ListofExamples" text="Adibideen zerrenda"/>
+<l:gentext key="listofexamples" text="Adibideen zerrenda"/>
+<l:gentext key="ListofFigures" text="Irudien zerrenda"/>
+<l:gentext key="listoffigures" text="Irudien zerrenda"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Taulen zerrenda"/>
+<l:gentext key="ListofTables" text="Taulen zerrenda"/>
+<l:gentext key="ListofUnknown" text="Ezezagunen zerrenda"/>
+<l:gentext key="listofunknown" text="Ezazagunen zerrenda"/>
+<l:gentext key="nav-home" text="Etxea"/>
+<l:gentext key="nav-next" text="Hurrengoa"/>
+<l:gentext key="nav-next-sibling" text="Aurreratze azkarra"/>
+<l:gentext key="nav-prev" text="Aurrekoa"/>
+<l:gentext key="nav-prev-sibling" text="Atzeratze azkarra"/>
+<l:gentext key="nav-up" text="Gora"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Zirriborroa"/>
+<l:gentext key="above" text="goian"/>
+<l:gentext key="below" text="behean"/>
+<l:gentext key="sectioncalled" text="honela deritzon atala"/>
+<l:gentext key="index symbols" text="Ikurrak"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Eranskina %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Atala %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ekuazioa %n. %t"/>
+<l:template name="example" text="Adibidea %n. %t"/>
+<l:template name="figure" text="Irudia %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Zatia %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prozedura %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Ekoizpena %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Taula %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Eranskina %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Atala %n. %t"/>
+<l:template name="part" text="Zatia %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Galdera %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Galdera %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="honela deritzon atala “%t”"/>
+<l:template name="refsection" text="honela deritzon atala “%t”"/>
+<l:template name="refsect1" text="honela deritzon atala “%t”"/>
+<l:template name="refsect2" text="honela deritzon atala “%t”"/>
+<l:template name="refsect3" text="honela deritzon atala “%t”"/>
+<l:template name="sect1" text="honela deritzon atala “%t”"/>
+<l:template name="sect2" text="honela deritzon atala “%t”"/>
+<l:template name="sect3" text="honela deritzon atala “%t”"/>
+<l:template name="sect4" text="honela deritzon atala “%t”"/>
+<l:template name="sect5" text="honela deritzon atala “%t”"/>
+<l:template name="section" text="honela deritzon atala “%t”"/>
+<l:template name="simplesect" text="honela deritzon atala “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="E: %n"/>
+<l:template name="appendix" text="Eranskina %n"/>
+<l:template name="bridgehead" text="Atala %n"/>
+<l:template name="chapter" text="Atala %n"/>
+<l:template name="equation" text="Ekuazioa %n"/>
+<l:template name="example" text="Adibidea %n"/>
+<l:template name="figure" text="Irudia %n"/>
+<l:template name="part" text="Zatia %n"/>
+<l:template name="procedure" text="Prozedura %n"/>
+<l:template name="productionset" text="Ekoizpena %n"/>
+<l:template name="qandadiv" text="Galdera eta E %n"/>
+<l:template name="qandaentry" text="Galdera %n"/>
+<l:template name="question" text="Galdera %n"/>
+<l:template name="sect1" text="Atala %n"/>
+<l:template name="sect2" text="Atala %n"/>
+<l:template name="sect3" text="Atala %n"/>
+<l:template name="sect4" text="Atala %n"/>
+<l:template name="sect5" text="Atala %n"/>
+<l:template name="section" text="Atala %n"/>
+<l:template name="table" text="Taula %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Eranskina %n, %t"/>
+<l:template name="bridgehead" text="Atala %n, “%t”"/>
+<l:template name="chapter" text="Atala %n, %t"/>
+<l:template name="equation" text="Ekuazioa %n, “%t”"/>
+<l:template name="example" text="Adibidea %n, “%t”"/>
+<l:template name="figure" text="Irudia %n, “%t”"/>
+<l:template name="part" text="Zatia %n, “%t”"/>
+<l:template name="procedure" text="Prozedura %n, “%t”"/>
+<l:template name="productionset" text="Ekoizpena %n, “%t”"/>
+<l:template name="qandadiv" text="Galdera eta E %n, “%t”"/>
+<l:template name="refsect1" text="honela deritzon atala “%t”"/>
+<l:template name="refsect2" text="honela deritzon atala “%t”"/>
+<l:template name="refsect3" text="honela deritzon atala “%t”"/>
+<l:template name="refsection" text="honela deritzon atala “%t”"/>
+<l:template name="sect1" text="Atala %n, “%t”"/>
+<l:template name="sect2" text="Atala %n, “%t”"/>
+<l:template name="sect3" text="Atala %n, “%t”"/>
+<l:template name="sect4" text="Atala %n, “%t”"/>
+<l:template name="sect5" text="Atala %n, “%t”"/>
+<l:template name="section" text="Atala %n, “%t”"/>
+<l:template name="simplesect" text="honela deritzon atala “%t”"/>
+<l:template name="table" text="Taula %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" eta "/>
+<l:template name="seplast" text=", eta "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Ikus %t"/>
+<l:template name="seealso" text="Ikus baita ere %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audientzia: "/>
+<l:template name="MsgLevel" text="Maila: "/>
+<l:template name="MsgOrig" text="Jatorria: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x042d Basque"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/fa.xml b/docs/xsl-generic/common/fa.xml
new file mode 100644
index 00000000..ac2aed2c
--- /dev/null
+++ b/docs/xsl-generic/common/fa.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="fa" english-language-name="Farsi">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/fa.xml -->
+<!-- * -->
+<!-- * E-mail the edited fa.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="چكيده"/>
+<l:gentext key="abstract" text="چكيده"/>
+<l:gentext key="Answer" text="ج:"/>
+<l:gentext key="answer" text="ج:"/>
+<l:gentext key="Appendix" text="پيوست"/>
+<l:gentext key="appendix" text="پيوست"/>
+<l:gentext key="Article" text="مقاله"/>
+<l:gentext key="article" text="مقاله"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="كتاب‌شناسی"/>
+<l:gentext key="bibliography" text="كتاب‌شناسی"/>
+<l:gentext key="Book" text="كتاب"/>
+<l:gentext key="book" text="كتاب"/>
+<l:gentext key="CAUTION" text="احتياط"/>
+<l:gentext key="Caution" text="احتياط"/>
+<l:gentext key="caution" text="احتياط"/>
+<l:gentext key="Chapter" text="فصل"/>
+<l:gentext key="chapter" text="فصل"/>
+<l:gentext key="Colophon" text="درباره‌ی نشريه"/>
+<l:gentext key="colophon" text="درباره‌ی نشريه"/>
+<l:gentext key="Copyright" text="حق طبع ونشر"/>
+<l:gentext key="copyright" text="حق طبع ونشر"/>
+<l:gentext key="Dedication" text="اهداء"/>
+<l:gentext key="dedication" text="اهداء"/>
+<l:gentext key="Edition" text="ويرايش"/>
+<l:gentext key="edition" text="ويرايش"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="معادله"/>
+<l:gentext key="equation" text="معادله"/>
+<l:gentext key="Example" text="مثال"/>
+<l:gentext key="example" text="مثال"/>
+<l:gentext key="Figure" text="شكل"/>
+<l:gentext key="figure" text="شكل"/>
+<l:gentext key="Glossary" text="واژه‌نامه"/>
+<l:gentext key="glossary" text="واژه‌نامه"/>
+<l:gentext key="GlossSee" text="ببیند"/>
+<l:gentext key="glosssee" text="ببیند"/>
+<l:gentext key="GlossSeeAlso" text="همچنین ببیند"/>
+<l:gentext key="glossseealso" text="همچنین ببیند"/>
+<l:gentext key="IMPORTANT" text="مهم"/>
+<l:gentext key="important" text="مهم"/>
+<l:gentext key="Important" text="مهم"/>
+<l:gentext key="Index" text="راهنما"/>
+<l:gentext key="index" text="راهنما"/>
+<l:gentext key="ISBN" text="شابک"/>
+<l:gentext key="isbn" text="شابک"/>
+<l:gentext key="LegalNotice" text="اخطار قانونی"/>
+<l:gentext key="legalnotice" text="اخطار قانونی"/>
+<l:gentext key="MsgAud" text="شنودگان"/>
+<l:gentext key="msgaud" text="شنودگان"/>
+<l:gentext key="MsgLevel" text="سطح پیام"/>
+<l:gentext key="msglevel" text="سطح پیام"/>
+<l:gentext key="MsgOrig" text="اصل"/>
+<l:gentext key="msgorig" text="اصل"/>
+<l:gentext key="NOTE" text="ياداشت"/>
+<l:gentext key="Note" text="ياداشت"/>
+<l:gentext key="note" text="ياداشت"/>
+<l:gentext key="Part" text="بخش"/>
+<l:gentext key="part" text="بخش"/>
+<l:gentext key="Preface" text="ديباچه"/>
+<l:gentext key="preface" text="ديباچه"/>
+<l:gentext key="Procedure" text="رويه"/>
+<l:gentext key="procedure" text="رويه"/>
+<l:gentext key="ProductionSet" text="توليد"/>
+<l:gentext key="PubDate" text="تاریخ انتشار"/>
+<l:gentext key="pubdate" text="تاریخ انتشار"/>
+<l:gentext key="Published" text="منتشر‌شده"/>
+<l:gentext key="published" text="منتشر‌شده"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="پرسش و‌ پاسخ"/>
+<l:gentext key="qandadiv" text="پرسش و پاسخ"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text=":پرسش"/>
+<l:gentext key="question" text=":پرسش"/>
+<l:gentext key="RefEntry" text="فقره"/>
+<l:gentext key="refentry" text="فقره"/>
+<l:gentext key="Reference" text="ارجاع"/>
+<l:gentext key="reference" text="ارجاع"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="نام"/>
+<l:gentext key="refname" text="نام"/>
+<l:gentext key="RefSection" text="قسمت"/>
+<l:gentext key="refsection" text="قسمت"/>
+<l:gentext key="RefSynopsisDiv" text="مختصر"/>
+<l:gentext key="refsynopsisdiv" text="مختصر"/>
+<l:gentext key="RevHistory" text="تاريخ بازبينی"/>
+<l:gentext key="revhistory" text="تاريخ بازبينی"/>
+<l:gentext key="revision" text="بازبينی"/>
+<l:gentext key="Revision" text="باز بينی"/>
+<l:gentext key="sect1" text="قسمت"/>
+<l:gentext key="sect2" text="قسمت"/>
+<l:gentext key="sect3" text="قسمت"/>
+<l:gentext key="sect4" text="قسمت"/>
+<l:gentext key="sect5" text="قسمت"/>
+<l:gentext key="section" text="قسمت"/>
+<l:gentext key="Section" text="قسمت"/>
+<l:gentext key="see" text="ببیند"/>
+<l:gentext key="See" text="ببیند"/>
+<l:gentext key="seealso" text="همچنین ببیند"/>
+<l:gentext key="Seealso" text="همچنین ببیند"/>
+<l:gentext key="SeeAlso" text="همچنین ببیند"/>
+<l:gentext key="set" text="مجموعه"/>
+<l:gentext key="Set" text="مجموعه"/>
+<l:gentext key="setindex" text="راهنمای مجموعه"/>
+<l:gentext key="SetIndex" text="راهنمای مجموعه"/>
+<l:gentext key="Sidebar" text="نوار کناری"/>
+<l:gentext key="sidebar" text="نوار کناری"/>
+<l:gentext key="step" text="گام"/>
+<l:gentext key="Step" text="گام"/>
+<l:gentext key="table" text="جدول"/>
+<l:gentext key="Table" text="جدول"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="نکته"/>
+<l:gentext key="TIP" text="نکته"/>
+<l:gentext key="Tip" text="نکته"/>
+<l:gentext key="Warning" text="هشدار"/>
+<l:gentext key="warning" text="هشدار"/>
+<l:gentext key="WARNING" text="هشدار"/>
+<l:gentext key="and" text="و"/>
+<l:gentext key="by" text="توسط"/>
+<l:gentext key="Edited" text="ویرایش شده"/>
+<l:gentext key="edited" text="ویرایش شده"/>
+<l:gentext key="Editedby" text="ویرایستار"/>
+<l:gentext key="editedby" text="ویرایستار"/>
+<l:gentext key="in" text="در"/>
+<l:gentext key="lastlistcomma" text="،"/>
+<l:gentext key="listcomma" text="،"/>
+<l:gentext key="nonexistantelement" text="عنصر ناموجود"/>
+<l:gentext key="notes" text="ياداشت‌ها"/>
+<l:gentext key="Notes" text="ياداشت‌ها"/>
+<l:gentext key="Pgs" text="صفحه"/>
+<l:gentext key="pgs" text="صفحه"/>
+<l:gentext key="Revisedby" text=" :بازبينی شده بوسیله‌ی"/>
+<l:gentext key="revisedby" text=" :بازبينس شده بوسیله‌ی"/>
+<l:gentext key="TableNotes" text="ياداشت‌ها"/>
+<l:gentext key="tablenotes" text="ياداشت‌ها"/>
+<l:gentext key="TableofContents" text="فهرست"/>
+<l:gentext key="tableofcontents" text="فهرست"/>
+<l:gentext key="unexpectedelementname" text="نام عنصرغيرمنتظره"/>
+<l:gentext key="unsupported" text="پشتيبانی نشده"/>
+<l:gentext key="xrefto" text="ارجاع به"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="فهرست معادلات"/>
+<l:gentext key="ListofEquations" text="فهرست معادلات"/>
+<l:gentext key="ListofExamples" text="فهرست امثال"/>
+<l:gentext key="listofexamples" text="فهرست امثال"/>
+<l:gentext key="ListofFigures" text="فهرست اشکال"/>
+<l:gentext key="listoffigures" text="فهرست اشکال"/>
+<l:gentext key="ListofProcedures" text="فهرست روند‌ها"/>
+<l:gentext key="listofprocedures" text="فهرست روند‌ها"/>
+<l:gentext key="listoftables" text="فهرست جدول‌ها"/>
+<l:gentext key="ListofTables" text="فهرست جدول‌ها"/>
+<l:gentext key="ListofUnknown" text="فهرست نادانسته‌ها"/>
+<l:gentext key="listofunknown" text="فهرست نادانسته‌ها"/>
+<l:gentext key="nav-home" text="خانه"/>
+<l:gentext key="nav-next" text="بعدی"/>
+<l:gentext key="nav-next-sibling" text="هم‌نيای بعدی"/>
+<l:gentext key="nav-prev" text="قبلی"/>
+<l:gentext key="nav-prev-sibling" text="هم‌نيای قبلی"/>
+<l:gentext key="nav-up" text="بالا"/>
+<l:gentext key="nav-toc" text="فهرست"/>
+<l:gentext key="Draft" text="پيش‌نويس"/>
+<l:gentext key="above" text="در‌بالا"/>
+<l:gentext key="below" text="در‌پایین"/>
+<l:gentext key="sectioncalled" text="بخشی بنام"/>
+<l:gentext key="index symbols" text="سمبل‌های راهنما"/>
+<l:gentext key="lowercase.alpha" text="ا ب پ ت ث ج چ ح خ د ذ ر ز ژس ش ص ض ع غ ف ق ک گ ل م ن و ه ی"/>
+<l:gentext key="uppercase.alpha" text="ا ب پ ت ث ج چ ح خ د ذ ر ز ژس ش ص ض ع غ ف ق ک گ ل م ن و ه ی"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="&#10; پيوست %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="&#10; فصل %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="&#10; معادله %n. %t"/>
+<l:template name="example" text="&#10; مثال %n. %t"/>
+<l:template name="figure" text="&#10; شكل %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="&#10; بخش %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="&#10; رويه %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="&#10; توليد %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="&#10; جدول %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="&#10; پيوست %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="&#10; فصل %n. %t"/>
+<l:template name="part" text="&#10; بخش %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="&#10; ج: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="&#10; :پرسش %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="&#10; :پرسش %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (%p صفحه‌ی)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(%p صفحه‌ی)"/>
+<l:template name="docname" text=" %oدر "/>
+<l:template name="docnamelong" text="%o در مستندی بنام "/>
+<l:template name="pageabbrev" text="(%p ص)"/>
+<l:template name="Page" text="%p صفحه‌ی"/>
+<l:template name="bridgehead" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="refsection" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="refsect1" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="refsect2" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="refsect3" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="sect1" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="sect2" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="sect3" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="sect4" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="sect5" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="section" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="simplesect" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="&#10; ج: %n"/>
+<l:template name="appendix" text="&#10; پيوست %n"/>
+<l:template name="bridgehead" text="&#10; قسمت %n"/>
+<l:template name="chapter" text="&#10; فصل %n"/>
+<l:template name="equation" text="&#10; معادله %n"/>
+<l:template name="example" text="&#10; مثال %n"/>
+<l:template name="figure" text="&#10; شكل %n"/>
+<l:template name="part" text="&#10; بخش %n"/>
+<l:template name="procedure" text="&#10; رويه %n"/>
+<l:template name="productionset" text="&#10; توليد %n"/>
+<l:template name="qandadiv" text="&#10; پرسش و‌ پاسخ %n"/>
+<l:template name="qandaentry" text="&#10; :پرسش %n"/>
+<l:template name="question" text="&#10; :پرسش %n"/>
+<l:template name="sect1" text="&#10; قسمت %n"/>
+<l:template name="sect2" text="&#10; قسمت %n"/>
+<l:template name="sect3" text="&#10; قسمت %n"/>
+<l:template name="sect4" text="&#10; قسمت %n"/>
+<l:template name="sect5" text="&#10; قسمت %n"/>
+<l:template name="section" text="&#10; قسمت %n"/>
+<l:template name="table" text="&#10; جدول %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="&#10; پيوست %n, %t"/>
+<l:template name="bridgehead" text="&#10; قسمت %n, “%t”&#10; "/>
+<l:template name="chapter" text="&#10; فصل %n, %t"/>
+<l:template name="equation" text="&#10; معادله %n, “%t”&#10; "/>
+<l:template name="example" text="&#10; مثال %n, “%t”&#10; "/>
+<l:template name="figure" text="&#10; شكل %n, “%t”&#10; "/>
+<l:template name="part" text="&#10; بخش %n, “%t”&#10; "/>
+<l:template name="procedure" text="&#10; رويه %n, “%t”&#10; "/>
+<l:template name="productionset" text="&#10; توليد %n, “%t”&#10; "/>
+<l:template name="qandadiv" text="&#10; پرسش و‌ پاسخ %n, “%t”&#10; "/>
+<l:template name="refsect1" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="refsect2" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="refsect3" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="refsection" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="sect1" text="&#10; قسمت %n, “%t”&#10; "/>
+<l:template name="sect2" text="&#10; قسمت %n, “%t”&#10; "/>
+<l:template name="sect3" text="&#10; قسمت %n, “%t”&#10; "/>
+<l:template name="sect4" text="&#10; قسمت %n, “%t”&#10; "/>
+<l:template name="sect5" text="&#10; قسمت %n, “%t”&#10; "/>
+<l:template name="section" text="&#10; قسمت %n, “%t”&#10; "/>
+<l:template name="simplesect" text="&#10; بخشی بنام&#10; “%t”&#10; "/>
+<l:template name="table" text="&#10; جدول %n, “%t”&#10; "/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text="&#10; ،&#10; "/>
+<l:template name="sep2" text="&#10; و&#10; "/>
+<l:template name="seplast" text="&#10; ،&#10; و&#10; "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text=" %t ببیند"/>
+<l:template name="seealso" text="%t همچنین ببیند"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="&#10; شنودگان: "/>
+<l:template name="MsgLevel" text="&#10; سطح پیام: "/>
+<l:template name="MsgOrig" text="&#10; اصل: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ژانويه"/>
+<l:template name="February" text="فوريه"/>
+<l:template name="March" text="مارس"/>
+<l:template name="April" text="اوريل"/>
+<l:template name="May" text="مه"/>
+<l:template name="June" text="ژوئن"/>
+<l:template name="July" text="ژوئیه"/>
+<l:template name="August" text="اوت"/>
+<l:template name="September" text="سپتامبر"/>
+<l:template name="October" text="اكتبر"/>
+<l:template name="November" text="نوامبر"/>
+<l:template name="December" text="دسامبر"/>
+<l:template name="Monday" text="دوشنبه"/>
+<l:template name="Tuesday" text="سه شنبه"/>
+<l:template name="Wednesday" text="چهار‌شنبه"/>
+<l:template name="Thursday" text="پنج‌شنبه"/>
+<l:template name="Friday" text="جمعه"/>
+<l:template name="Saturday" text="شنبه"/>
+<l:template name="Sunday" text="يك‌شنبه"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ژانويه"/>
+<l:template name="Feb" text="فوريه"/>
+<l:template name="Mar" text="مارس"/>
+<l:template name="Apr" text="اوريل"/>
+<l:template name="May" text="مه"/>
+<l:template name="Jun" text="ژوئن"/>
+<l:template name="Jul" text="ژوئيه"/>
+<l:template name="Aug" text="اوت"/>
+<l:template name="Sep" text="سپتامبر"/>
+<l:template name="Oct" text="اكتبر"/>
+<l:template name="Nov" text="نوامبر"/>
+<l:template name="Dec" text="دسامبر"/>
+<l:template name="Mon" text="دو‌شنبه"/>
+<l:template name="Tue" text="سه‌شنبه"/>
+<l:template name="Wed" text="چهار‌شنبه"/>
+<l:template name="Thu" text="پنج‌شنبه"/>
+<l:template name="Fri" text="جمعه"/>
+<l:template name="Sat" text="شنبه"/>
+<l:template name="Sun" text="يك‌شنبه"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0429 Farsi"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/fi.xml b/docs/xsl-generic/common/fi.xml
new file mode 100644
index 00000000..d28802ae
--- /dev/null
+++ b/docs/xsl-generic/common/fi.xml
@@ -0,0 +1,664 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="fi" english-language-name="Finnish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/fi.xml -->
+<!-- * -->
+<!-- * E-mail the edited fi.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Tiivistelmä"/>
+<l:gentext key="abstract" text="tiivistelmä"/>
+<l:gentext key="Answer" text="V:"/>
+<l:gentext key="answer" text="V:"/>
+<l:gentext key="Appendix" text="Liite"/>
+<l:gentext key="appendix" text="liite"/>
+<l:gentext key="Article" text="Artikkeli"/>
+<l:gentext key="article" text="Artikkeli"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Lähteet"/>
+<l:gentext key="bibliography" text="Lähteet"/>
+<l:gentext key="Book" text="Kirja"/>
+<l:gentext key="book" text="Kirja"/>
+<l:gentext key="CAUTION" text="VARO"/>
+<l:gentext key="Caution" text="Varo"/>
+<l:gentext key="caution" text="varo"/>
+<l:gentext key="Chapter" text="Luku"/>
+<l:gentext key="chapter" text="luku"/>
+<l:gentext key="Colophon" text="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="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Kaava"/>
+<l:gentext key="equation" text="Kaava"/>
+<l:gentext key="Example" text="Esimerkki"/>
+<l:gentext key="example" text="esimerkki"/>
+<l:gentext key="Figure" text="Kuva"/>
+<l:gentext key="figure" text="kuva"/>
+<l:gentext key="Glossary" text="Sanasto"/>
+<l:gentext key="glossary" text="sanasto"/>
+<l:gentext key="GlossSee" text="Katso"/>
+<l:gentext key="glosssee" text="katso"/>
+<l:gentext key="GlossSeeAlso" text="Katso myös"/>
+<l:gentext key="glossseealso" text="Katso myös"/>
+<l:gentext key="IMPORTANT" text="TÄRKEÄÄ"/>
+<l:gentext key="important" text="tärkeää"/>
+<l:gentext key="Important" text="Tärkeää"/>
+<l:gentext key="Index" text="Indeksi"/>
+<l:gentext key="index" text="Indeksi"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Oikeudellinen ilmoitus"/>
+<l:gentext key="legalnotice" text="oikeudellinen ilmoitus"/>
+<l:gentext key="MsgAud" text="Yleisö"/>
+<l:gentext key="msgaud" text="Yleisö"/>
+<l:gentext key="MsgLevel" text="Taso"/>
+<l:gentext key="msglevel" text="Taso"/>
+<l:gentext key="MsgOrig" text="Alkuperä"/>
+<l:gentext key="msgorig" text="Alkuperä"/>
+<l:gentext key="NOTE" text="HUOMAA"/>
+<l:gentext key="Note" text="Huomaa"/>
+<l:gentext key="note" text="Huomaa"/>
+<l:gentext key="Part" text="Osa"/>
+<l:gentext key="part" text="Osa"/>
+<l:gentext key="Preface" text="Esipuhe"/>
+<l:gentext key="preface" text="Esipuhe"/>
+<l:gentext key="Procedure" text="Aliohjelma"/>
+<l:gentext key="procedure" text="Aliohjelma"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Julkaistu"/>
+<l:gentext key="published" text="Julkaistu"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="K ja V"/>
+<l:gentext key="qandadiv" text="K ja V"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="K:"/>
+<l:gentext key="question" text="K:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Lähdeluettelo"/>
+<l:gentext key="reference" text="Lähdeluettelo"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nimi"/>
+<l:gentext key="refname" text="Nimi"/>
+<l:gentext key="RefSection" text=""/>
+<l: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="Luku"/>
+<l:gentext key="sect2" text="Luku"/>
+<l:gentext key="sect3" text="Luku"/>
+<l:gentext key="sect4" text="Luku"/>
+<l:gentext key="sect5" text="Luku"/>
+<l:gentext key="section" text="kohta"/>
+<l:gentext key="Section" text="Kohta"/>
+<l:gentext key="see" text="Katso"/>
+<l:gentext key="See" text="Katso"/>
+<l:gentext key="seealso" text="katso myös"/>
+<l:gentext key="Seealso" text="Katso myös"/>
+<l:gentext key="SeeAlso" text="Katso myös"/>
+<l:gentext key="set" text="Kokoelma"/>
+<l:gentext key="Set" text="Kokoelma"/>
+<l:gentext key="setindex" text="Kokoelman indeksi"/>
+<l:gentext key="SetIndex" text="Kokoelman indeksi"/>
+<l:gentext key="Sidebar" text="Sivupalkki"/>
+<l:gentext key="sidebar" text="sivupalkki"/>
+<l:gentext key="step" text="step"/>
+<l:gentext key="Step" text="Step"/>
+<l:gentext key="table" text="Taulu"/>
+<l:gentext key="Table" text="Taulu"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Vihje"/>
+<l:gentext key="TIP" text="VIHJE"/>
+<l:gentext key="Tip" text="Vihje"/>
+<l:gentext key="Warning" text="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ä 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="Muokannut: "/>
+<l:gentext key="revisedby" text="muokannut: "/>
+<l:gentext key="TableNotes" text=""/>
+<l:gentext key="tablenotes" text=""/>
+<l:gentext key="TableofContents" text="Sisällys"/>
+<l:gentext key="tableofcontents" text="Sisällys"/>
+<l:gentext key="unexpectedelementname" text="Odottamaton elementin nimi"/>
+<l:gentext key="unsupported" text="ei tueta"/>
+<l:gentext key="xrefto" text="xref johonkin"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Luettelo esimerkeistä"/>
+<l:gentext key="ListofEquations" text="Luettelo esimerkeistä"/>
+<l:gentext key="ListofExamples" text="Luettelo esimerkeistä"/>
+<l:gentext key="listofexamples" text="Luettelo esimerkeistä"/>
+<l:gentext key="ListofFigures" text="Luettelo kuvista"/>
+<l:gentext key="listoffigures" text="Luettelo kuvista"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Luettelo tauluista"/>
+<l:gentext key="ListofTables" text="Luettelo tauluista"/>
+<l:gentext key="ListofUnknown" text="Luettelo tuntemattomista"/>
+<l:gentext key="listofunknown" text="Luettelo tuntemattomista"/>
+<l:gentext key="nav-home" text="Alkuun"/>
+<l:gentext key="nav-next" text="Seuraava"/>
+<l:gentext key="nav-next-sibling" text="Nopeasti eteenpäin"/>
+<l:gentext key="nav-prev" text="Edellinen"/>
+<l:gentext key="nav-prev-sibling" text="Nopeasti taaksepäin"/>
+<l:gentext key="nav-up" text="Ylös"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Luonnos"/>
+<l:gentext key="above" text="yllä"/>
+<l:gentext key="below" text="alla"/>
+<l:gentext key="sectioncalled" text="luku nimeltä"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzåäöšž"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖŠŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="”"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="’"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Liite %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Luku %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Kaava %n. %t"/>
+<l:template name="example" text="Esimerkki %n. %t"/>
+<l:template name="figure" text="Kuva %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Osa %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Aliohjelma %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="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="Taulu %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Liite %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Luku %n. %t"/>
+<l:template name="part" text="Osa %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(sivu %p)"/>
+<l:template name="docname" text=" kirjoitelmassa %o"/>
+<l:template name="docnamelong" text=" kirjoitelmassa otsikoltaan %o"/>
+<l:template name="pageabbrev" text="(s. %p)"/>
+<l:template name="Page" text="Sivu %p"/>
+<l:template name="bridgehead" text="”%t”"/>
+<l:template name="refsection" text="”%t”"/>
+<l:template name="refsect1" text="”%t”"/>
+<l:template name="refsect2" text="”%t”"/>
+<l:template name="refsect3" text="”%t”"/>
+<l:template name="sect1" text="”%t”"/>
+<l:template name="sect2" text="”%t”"/>
+<l:template name="sect3" text="”%t”"/>
+<l:template name="sect4" text="”%t”"/>
+<l:template name="sect5" text="”%t”"/>
+<l:template name="section" text="”%t”"/>
+<l:template name="simplesect" text="”%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="V: %n"/>
+<l:template name="appendix" text="Liite %n"/>
+<l:template name="bridgehead" text="Kohta %n"/>
+<l:template name="chapter" text="Luku %n"/>
+<l:template name="equation" text="Kaava %n"/>
+<l:template name="example" text="Esimerkki %n"/>
+<l:template name="figure" text="Kuva %n"/>
+<l:template name="part" text="Osa %n"/>
+<l:template name="procedure" text="Aliohjelma %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="K ja V %n"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="sect1" text="Kohta %n"/>
+<l:template name="sect2" text="Kohta %n"/>
+<l:template name="sect3" text="Kohta %n"/>
+<l:template name="sect4" text="Kohta %n"/>
+<l:template name="sect5" text="Kohta %n"/>
+<l:template name="section" text="Kohta %n"/>
+<l:template name="table" text="Taulu %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Liite %n, %t"/>
+<l:template name="bridgehead" text="Kohta %n, ”%t”"/>
+<l:template name="chapter" text="Luku %n, %t"/>
+<l:template name="equation" text="Kaava %n, ”%t”"/>
+<l:template name="example" text="Esimerkki %n, ”%t”"/>
+<l:template name="figure" text="Kuva %n, ”%t”"/>
+<l:template name="part" text="Osa %n, ”%t”"/>
+<l:template name="procedure" text="Aliohjelma %n, ”%t”"/>
+<l:template name="productionset" text="Production %n, ”%t”"/>
+<l:template name="qandadiv" text="K ja V %n, ”%t”"/>
+<l:template name="refsect1" text="luku nimeltä ”%t”"/>
+<l:template name="refsect2" text="luku nimeltä ”%t”"/>
+<l:template name="refsect3" text="luku nimeltä ”%t”"/>
+<l:template name="refsection" text="luku nimeltä ”%t”"/>
+<l:template name="sect1" text="Kohta %n, ”%t”"/>
+<l:template name="sect2" text="Kohta %n, ”%t”"/>
+<l:template name="sect3" text="Kohta %n, ”%t”"/>
+<l:template name="sect4" text="Kohta %n, ”%t”"/>
+<l:template name="sect5" text="Kohta %n, ”%t”"/>
+<l:template name="section" text="Kohta %n, ”%t”"/>
+<l:template name="simplesect" text="luku nimeltä ”%t”"/>
+<l:template name="table" text="Taulu %n, ”%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ja "/>
+<l:template name="seplast" text=", ja "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Katso %t"/>
+<l:template name="seealso" text="Katso myös %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Yleisö: "/>
+<l:template name="MsgLevel" text="Taso: "/>
+<l:template name="MsgOrig" text="Alkuperä: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text=""/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text=""/>
+<l:template name="February" text=""/>
+<l:template name="March" text=""/>
+<l:template name="April" text=""/>
+<l:template name="May" text=""/>
+<l:template name="June" text=""/>
+<l:template name="July" text=""/>
+<l:template name="August" text=""/>
+<l:template name="September" text=""/>
+<l:template name="October" text=""/>
+<l:template name="November" text=""/>
+<l:template name="December" text=""/>
+<l:template name="Monday" text=""/>
+<l:template name="Tuesday" text=""/>
+<l:template name="Wednesday" text=""/>
+<l:template name="Thursday" text=""/>
+<l:template name="Friday" text=""/>
+<l:template name="Saturday" text=""/>
+<l:template name="Sunday" text=""/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text=""/>
+<l:template name="Feb" text=""/>
+<l:template name="Mar" text=""/>
+<l:template name="Apr" text=""/>
+<l:template name="May" text=""/>
+<l:template name="Jun" text=""/>
+<l:template name="Jul" text=""/>
+<l:template name="Aug" text=""/>
+<l:template name="Sep" text=""/>
+<l:template name="Oct" text=""/>
+<l:template name="Nov" text=""/>
+<l:template name="Dec" text=""/>
+<l:template name="Mon" text=""/>
+<l:template name="Tue" text=""/>
+<l:template name="Wed" text=""/>
+<l:template name="Thu" text=""/>
+<l:template name="Fri" text=""/>
+<l:template name="Sat" text=""/>
+<l:template name="Sun" text=""/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040b Finnish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbole</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">Š</l:l>
+<l:l i="20">š</l:l>
+<l:l i="21">T</l:l>
+<l:l i="21">t</l:l>
+<l:l i="22">U</l:l>
+<l:l i="22">u</l:l>
+<l:l i="23">V</l:l>
+<l:l i="23">v</l:l>
+<l:l i="24">W</l:l>
+<l:l i="24">w</l:l>
+<l:l i="25">X</l:l>
+<l:l i="25">x</l:l>
+<l:l i="26">Y</l:l>
+<l:l i="26">y</l:l>
+<l:l i="27">Z</l:l>
+<l:l i="27">z</l:l>
+<l:l i="28">Ž</l:l>
+<l:l i="28">ž</l:l>
+<l:l i="29">Å</l:l>
+<l:l i="29">å</l:l>
+<l:l i="30">Ä</l:l>
+<l:l i="30">ä</l:l>
+<l:l i="31">Ö</l:l>
+<l:l i="31">ö</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/fr.xml b/docs/xsl-generic/common/fr.xml
new file mode 100644
index 00000000..58826b96
--- /dev/null
+++ b/docs/xsl-generic/common/fr.xml
@@ -0,0 +1,684 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="fr" english-language-name="French">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/fr.xml -->
+<!-- * -->
+<!-- * E-mail the edited fr.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Résumé"/>
+<l:gentext key="abstract" text="Résumé"/>
+<l:gentext key="Answer" text="R :"/>
+<l:gentext key="answer" text="R :"/>
+<l:gentext key="Appendix" text="Annexe"/>
+<l:gentext key="appendix" text="annexe"/>
+<l:gentext key="Article" text="Article"/>
+<l:gentext key="article" text="Article"/>
+<l:gentext key="Author" text="Auteur"/>
+<l:gentext key="Bibliography" text="Bibliographie"/>
+<l:gentext key="bibliography" text="Bibliographie"/>
+<l:gentext key="Book" text="Livre"/>
+<l:gentext key="book" text="Livre"/>
+<l:gentext key="CAUTION" text="ATTENTION"/>
+<l:gentext key="Caution" text="Attention"/>
+<l:gentext key="caution" text="Attention"/>
+<l:gentext key="Chapter" text="Chapitre"/>
+<l:gentext key="chapter" text="chapitre"/>
+<l:gentext key="Colophon" text="Achevé d'imprimer"/>
+<l:gentext key="colophon" text="Achevé d'imprimer"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dédicace"/>
+<l:gentext key="dedication" text="Dédicace"/>
+<l:gentext key="Edition" text="Édition"/>
+<l:gentext key="edition" text="Édition"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Équation"/>
+<l:gentext key="equation" text="Équation"/>
+<l:gentext key="Example" text="Exemple"/>
+<l:gentext key="example" text="Exemple"/>
+<l:gentext key="Figure" text="Figure"/>
+<l:gentext key="figure" text="Figure"/>
+<l:gentext key="Glossary" text="Glossaire"/>
+<l:gentext key="glossary" text="Glossaire"/>
+<l:gentext key="GlossSee" text="Voir"/>
+<l:gentext key="glosssee" text="Voir"/>
+<l:gentext key="GlossSeeAlso" text="Voir aussi"/>
+<l:gentext key="glossseealso" text="Voir aussi"/>
+<l:gentext key="IMPORTANT" text="IMPORTANT"/>
+<l:gentext key="important" text="Important"/>
+<l:gentext key="Important" text="Important"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="Index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Note légale"/>
+<l:gentext key="legalnotice" text="Note légale"/>
+<l:gentext key="MsgAud" text="Public visé"/>
+<l:gentext key="msgaud" text="Public visé"/>
+<l:gentext key="MsgLevel" text="Niveau"/>
+<l:gentext key="msglevel" text="Niveau"/>
+<l:gentext key="MsgOrig" text="Origine"/>
+<l:gentext key="msgorig" text="Origine"/>
+<l:gentext key="NOTE" text="NOTE"/>
+<l:gentext key="Note" text="Note"/>
+<l:gentext key="note" text="Note"/>
+<l:gentext key="Part" text="Partie"/>
+<l:gentext key="part" text="Partie"/>
+<l:gentext key="Preface" text="Préface"/>
+<l:gentext key="preface" text="Préface"/>
+<l:gentext key="Procedure" text="Procédure"/>
+<l:gentext key="procedure" text="Procédure"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Date de publication"/>
+<l:gentext key="pubdate" text="Date de publication"/>
+<l:gentext key="Published" text="Publié le"/>
+<l:gentext key="published" text="Publié le"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; R"/>
+<l:gentext key="qandadiv" text="Q &amp; R"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Q :"/>
+<l:gentext key="question" text="Q :"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Référence"/>
+<l:gentext key="reference" text="Référence"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nom"/>
+<l:gentext key="refname" text="Nom"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Historique des versions"/>
+<l:gentext key="revhistory" text="Historique des versions"/>
+<l:gentext key="revision" text="Version"/>
+<l:gentext key="Revision" text="Version"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="section"/>
+<l:gentext key="Section" text="Section"/>
+<l:gentext key="see" text="voir"/>
+<l:gentext key="See" text="Voir"/>
+<l:gentext key="seealso" text="voir aussi"/>
+<l:gentext key="Seealso" text="Voir aussi"/>
+<l:gentext key="SeeAlso" text="Voir Aussi"/>
+<l:gentext key="set" text="Ensemble"/>
+<l:gentext key="Set" text="Ensemble"/>
+<l:gentext key="setindex" text="Index"/>
+<l:gentext key="SetIndex" text="Index"/>
+<l:gentext key="Sidebar" text="Filet vertical"/>
+<l:gentext key="sidebar" text="Filet vertical"/>
+<l:gentext key="step" text="étape"/>
+<l:gentext key="Step" text="Étape"/>
+<l:gentext key="table" text="Tableau"/>
+<l:gentext key="Table" text="Tableau"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="ASTUCE"/>
+<l:gentext key="TIP" text="ASTUCE"/>
+<l:gentext key="Tip" text="Astuce"/>
+<l:gentext key="Warning" text="Avertissement"/>
+<l:gentext key="warning" text="AVERTISSEMENT"/>
+<l:gentext key="WARNING" text="AVERTISSEMENT"/>
+<l:gentext key="and" text="et"/>
+<l:gentext key="by" text="par"/>
+<l:gentext key="Edited" text="Publié"/>
+<l:gentext key="edited" text="Publié"/>
+<l:gentext key="Editedby" text="Publié par"/>
+<l:gentext key="editedby" text="Publié par"/>
+<l:gentext key="in" text="dans"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="Cet élé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 et corrigé par : "/>
+<l:gentext key="revisedby" text="Revu et corrigé par : "/>
+<l:gentext key="TableNotes" text="Remarques"/>
+<l:gentext key="tablenotes" text="Remarques"/>
+<l:gentext key="TableofContents" text="Table des matières"/>
+<l:gentext key="tableofcontents" text="Table des matières"/>
+<l:gentext key="unexpectedelementname" text="Nom d'élément inattendu"/>
+<l:gentext key="unsupported" text="Non reconnu par le système"/>
+<l:gentext key="xrefto" text="Référence vers"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Liste des équations"/>
+<l:gentext key="ListofEquations" text="Liste des équations"/>
+<l:gentext key="ListofExamples" text="Liste des exemples"/>
+<l:gentext key="listofexamples" text="Liste des exemples"/>
+<l:gentext key="ListofFigures" text="Liste des illustrations"/>
+<l:gentext key="listoffigures" text="Liste des illustrations"/>
+<l:gentext key="ListofProcedures" text="Liste des procédures"/>
+<l:gentext key="listofprocedures" text="Liste des procédures"/>
+<l:gentext key="listoftables" text="Liste des tableaux"/>
+<l:gentext key="ListofTables" text="Liste des tableaux"/>
+<l:gentext key="ListofUnknown" text="Liste inconnue"/>
+<l:gentext key="listofunknown" text="Liste inconnue"/>
+<l:gentext key="nav-home" text="Sommaire"/>
+<l:gentext key="nav-next" text="Suivant"/>
+<l:gentext key="nav-next-sibling" text="Avance rapide"/>
+<l:gentext key="nav-prev" text="Précédent"/>
+<l:gentext key="nav-prev-sibling" text="Arrière rapide"/>
+<l:gentext key="nav-up" text="Niveau supérieur"/>
+<l:gentext key="nav-toc" text="TdM"/>
+<l:gentext key="Draft" text="Brouillon"/>
+<l:gentext key="above" text="au-dessus"/>
+<l:gentext key="below" text="au-dessous"/>
+<l:gentext key="sectioncalled" text="la section intitulée"/>
+<l:gentext key="index symbols" text="Symboles"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzâêîôûëïüàèùéçæœ"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÂÊÎÔÛËÏÜÀÈÙÉÇÆŒ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="« "/>
+<l:dingbat key="endquote" text=" »"/>
+<l:dingbat key="nestedstartquote" text="“"/>
+<l:dingbat key="nestedendquote" text="”"/>
+<l:dingbat key="singlestartquote" text="‹"/>
+<l:dingbat key="singleendquote" text="›"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Annexe %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Chapitre %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Équation %n. %t"/>
+<l:template name="example" text="Exemple %n. %t"/>
+<l:template name="figure" text="Figure %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procédure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tableau %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Annexe %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Chapitre %n. %t"/>
+<l:template name="part" text="Partie %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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 : %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q : %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q : %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="la section intitulée « %t »"/>
+<l:template name="refsection" text="la section intitulée « %t »"/>
+<l:template name="refsect1" text="la section intitulée « %t »"/>
+<l:template name="refsect2" text="la section intitulée « %t »"/>
+<l:template name="refsect3" text="la section intitulée « %t »"/>
+<l:template name="sect1" text="la section intitulée « %t »"/>
+<l:template name="sect2" text="la section intitulée « %t »"/>
+<l:template name="sect3" text="la section intitulée « %t »"/>
+<l:template name="sect4" text="la section intitulée « %t »"/>
+<l:template name="sect5" text="la section intitulée « %t »"/>
+<l:template name="section" text="la section intitulée « %t »"/>
+<l:template name="simplesect" text="la section intitulée « %t »"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R : %n"/>
+<l:template name="appendix" text="Annexe %n"/>
+<l:template name="bridgehead" text="Section %n"/>
+<l:template name="chapter" text="Chapitre %n"/>
+<l:template name="equation" text="Équation %n"/>
+<l:template name="example" text="Exemple %n"/>
+<l:template name="figure" text="Figure %n"/>
+<l:template name="part" text="Partie %n"/>
+<l:template name="procedure" text="Procédure %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Q &amp; R %n"/>
+<l:template name="qandaentry" text="Q : %n"/>
+<l:template name="question" text="Q : %n"/>
+<l:template name="sect1" text="Section %n"/>
+<l:template name="sect2" text="Section %n"/>
+<l:template name="sect3" text="Section %n"/>
+<l:template name="sect4" text="Section %n"/>
+<l:template name="sect5" text="Section %n"/>
+<l:template name="section" text="Section %n"/>
+<l:template name="table" text="Tableau %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Annexe %n, %t"/>
+<l:template name="bridgehead" text="Section %n, « %t »"/>
+<l:template name="chapter" text="Chapitre %n, %t"/>
+<l:template name="equation" text="Équation %n, « %t »"/>
+<l:template name="example" text="Exemple %n, « %t »"/>
+<l:template name="figure" text="Figure %n, « %t »"/>
+<l:template name="part" text="Partie %n, « %t »"/>
+<l:template name="procedure" text="Procédure %n, « %t »"/>
+<l:template name="productionset" text="Production %n, « %t »"/>
+<l:template name="qandadiv" text="Q &amp; R %n, « %t »"/>
+<l:template name="refsect1" text="la section intitulée « %t »"/>
+<l:template name="refsect2" text="la section intitulée « %t »"/>
+<l:template name="refsect3" text="la section intitulée « %t »"/>
+<l:template name="refsection" text="la section intitulée « %t »"/>
+<l:template name="sect1" text="Section %n, « %t »"/>
+<l:template name="sect2" text="Section %n, « %t »"/>
+<l:template name="sect3" text="Section %n, « %t »"/>
+<l:template name="sect4" text="Section %n, « %t »"/>
+<l:template name="sect5" text="Section %n, « %t »"/>
+<l:template name="section" text="Section %n, « %t »"/>
+<l:template name="simplesect" text="la section intitulée « %t »"/>
+<l:template name="table" text="Tableau %n, « %t »"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" et "/>
+<l:template name="seplast" text=", et "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Voir %t"/>
+<l:template name="seealso" text="Voir aussi %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Public visé: "/>
+<l:template name="MsgLevel" text="Niveau: "/>
+<l:template name="MsgOrig" text="Origine: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="janvier"/>
+<l:template name="February" text="février"/>
+<l:template name="March" text="mars"/>
+<l:template name="April" text="avril"/>
+<l:template name="May" text="mai"/>
+<l:template name="June" text="juin"/>
+<l:template name="July" text="juillet"/>
+<l:template name="August" text="août"/>
+<l:template name="September" text="septembre"/>
+<l:template name="October" text="octobre"/>
+<l:template name="November" text="novembre"/>
+<l:template name="December" text="décembre"/>
+<l:template name="Monday" text="lundi"/>
+<l:template name="Tuesday" text="mardi"/>
+<l:template name="Wednesday" text="mercredi"/>
+<l:template name="Thursday" text="jeudi"/>
+<l:template name="Friday" text="vendredi"/>
+<l:template name="Saturday" text="samedi"/>
+<l:template name="Sunday" text="dimanche"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="fév"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="avr"/>
+<l:template name="May" text="mai"/>
+<l:template name="Jun" text="jun"/>
+<l:template name="Jul" text="jui"/>
+<l:template name="Aug" text="aoû"/>
+<l:template name="Sep" text="sep"/>
+<l:template name="Oct" text="oct"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="déc"/>
+<l:template name="Mon" text="lun"/>
+<l:template name="Tue" text="mar"/>
+<l:template name="Wed" text="mer"/>
+<l:template name="Thu" text="jeu"/>
+<l:template name="Fri" text="ven"/>
+<l:template name="Sat" text="sam"/>
+<l:template name="Sun" text="dim"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040c French (FRANCE)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symboles</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">à</l:l>
+<l:l i="1">À</l:l>
+<l:l i="1">â</l:l>
+<l:l i="1">Â</l:l>
+<l:l i="1">Æ</l:l>
+<l:l i="1">æ</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="3">ç</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="5">ê</l:l>
+<l:l i="5">Ê</l:l>
+<l:l i="5">é</l:l>
+<l:l i="5">É</l:l>
+<l:l i="5">è</l:l>
+<l:l i="5">È</l:l>
+<l:l i="5">ë</l:l>
+<l:l i="5">Ë</l:l>
+<l:l i="5">€</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="9">Î</l:l>
+<l:l i="9">î</l:l>
+<l:l i="9">Ï</l:l>
+<l:l i="9">ï</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="15">Ö</l:l>
+<l:l i="15">ö</l:l>
+<l:l i="15">Œ</l:l>
+<l:l i="15">œ</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="21">Ù</l:l>
+<l:l i="21">ù</l:l>
+<l:l i="21">Û</l:l>
+<l:l i="21">û</l:l>
+<l:l i="21">Ü</l:l>
+<l:l i="21">ü</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/ga.xml b/docs/xsl-generic/common/ga.xml
new file mode 100644
index 00000000..78274b29
--- /dev/null
+++ b/docs/xsl-generic/common/ga.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ga" english-language-name="Irish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ga.xml -->
+<!-- * -->
+<!-- * E-mail the edited ga.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Achoimre"/>
+<l:gentext key="abstract" text="Achoimre"/>
+<l:gentext key="Answer" text="F:"/>
+<l:gentext key="answer" text="F:"/>
+<l:gentext key="Appendix" text="Aguisín"/>
+<l:gentext key="appendix" text="Aguisín"/>
+<l:gentext key="Article" text="Alt"/>
+<l:gentext key="article" text="Alt"/>
+<l:gentext key="Author" text="Údar"/>
+<l:gentext key="Bibliography" text="Leabharliosta"/>
+<l:gentext key="bibliography" text="Leabharliosta"/>
+<l:gentext key="Book" text="Leabhar"/>
+<l:gentext key="book" text="Leabhar"/>
+<l:gentext key="CAUTION" text="FAINIC"/>
+<l:gentext key="Caution" text="Fainic"/>
+<l:gentext key="caution" text="Fainic"/>
+<l:gentext key="Chapter" text="Caibidil"/>
+<l:gentext key="chapter" text="Caibidil"/>
+<l:gentext key="Colophon" text="Colafan"/>
+<l:gentext key="colophon" text="Colafan"/>
+<l:gentext key="Copyright" text="Cóipcheart"/>
+<l:gentext key="copyright" text="Cóipcheart"/>
+<l:gentext key="Dedication" text="Tíolacadh"/>
+<l:gentext key="dedication" text="Tíolacadh"/>
+<l:gentext key="Edition" text="Eagrán"/>
+<l:gentext key="edition" text="Eagrán"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Cothromóid"/>
+<l:gentext key="equation" text="Cothromóid"/>
+<l:gentext key="Example" text="Sampla"/>
+<l:gentext key="example" text="Sampla"/>
+<l:gentext key="Figure" text="Léaráid"/>
+<l:gentext key="figure" text="Léaráid"/>
+<l:gentext key="Glossary" text="Gluais"/>
+<l:gentext key="glossary" text="Gluais"/>
+<l:gentext key="GlossSee" text="Féach"/>
+<l:gentext key="glosssee" text="Féach"/>
+<l:gentext key="GlossSeeAlso" text="Féach Freisin"/>
+<l:gentext key="glossseealso" text="Féach Freisin"/>
+<l:gentext key="IMPORTANT" text="TÁBHACHTACH"/>
+<l:gentext key="important" text="Tábhachtach"/>
+<l:gentext key="Important" text="Tábhachtach"/>
+<l:gentext key="Index" text="Innéacs"/>
+<l:gentext key="index" text="Innéacs"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Fógra Dlí"/>
+<l:gentext key="legalnotice" text="Fógra Dlí"/>
+<l:gentext key="MsgAud" text="Sprioclucht"/>
+<l:gentext key="msgaud" text="Sprioclucht"/>
+<l:gentext key="MsgLevel" text="Leibhéal"/>
+<l:gentext key="msglevel" text="Leibhéal"/>
+<l:gentext key="MsgOrig" text="Foinse"/>
+<l:gentext key="msgorig" text="Foinse"/>
+<l:gentext key="NOTE" text="NÓTA"/>
+<l:gentext key="Note" text="Nóta"/>
+<l:gentext key="note" text="Nóta"/>
+<l:gentext key="Part" text="Cuid"/>
+<l:gentext key="part" text="Cuid"/>
+<l:gentext key="Preface" text="Réamhrá"/>
+<l:gentext key="preface" text="Réamhrá"/>
+<l:gentext key="Procedure" text="Gnás"/>
+<l:gentext key="procedure" text="Gnás"/>
+<l:gentext key="ProductionSet" text="Rialacha Táirgthe"/>
+<l:gentext key="PubDate" text="Dáta Foilsithe"/>
+<l:gentext key="pubdate" text="Dáta foilsithe"/>
+<l:gentext key="Published" text="Foilsithe"/>
+<l:gentext key="published" text="Foilsithe"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="C &amp; F"/>
+<l:gentext key="qandadiv" text="C &amp; F"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="C:"/>
+<l:gentext key="question" text="C:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Tagairt"/>
+<l:gentext key="reference" text="Tagairt"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Ainm"/>
+<l:gentext key="refname" text="Ainm"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Achoimre"/>
+<l:gentext key="refsynopsisdiv" text="Achoimre"/>
+<l:gentext key="RevHistory" text="Stair Leasaithe"/>
+<l:gentext key="revhistory" text="Stair Leasaithe"/>
+<l:gentext key="revision" text="Leasú"/>
+<l:gentext key="Revision" text="Leasú"/>
+<l:gentext key="sect1" text="Rannán"/>
+<l:gentext key="sect2" text="Rannán"/>
+<l:gentext key="sect3" text="Rannán"/>
+<l:gentext key="sect4" text="Rannán"/>
+<l:gentext key="sect5" text="Rannán"/>
+<l:gentext key="section" text="Rannán"/>
+<l:gentext key="Section" text="Rannán"/>
+<l:gentext key="see" text="féach"/>
+<l:gentext key="See" text="Féach"/>
+<l:gentext key="seealso" text="féach freisin"/>
+<l:gentext key="Seealso" text="Féach freisin"/>
+<l:gentext key="SeeAlso" text="Féach Freisin"/>
+<l:gentext key="set" text="Tacar"/>
+<l:gentext key="Set" text="Tacar"/>
+<l:gentext key="setindex" text="Innéacs"/>
+<l:gentext key="SetIndex" text="Innéacs"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="taobhbharra"/>
+<l:gentext key="step" text="céim"/>
+<l:gentext key="Step" text="Céim"/>
+<l:gentext key="table" text="Tábla"/>
+<l:gentext key="Table" text="Tábla"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Leid"/>
+<l:gentext key="TIP" text="LEID"/>
+<l:gentext key="Tip" text="Leid"/>
+<l:gentext key="Warning" text="Rabhadh"/>
+<l:gentext key="warning" text="Rabhadh"/>
+<l:gentext key="WARNING" text="RABHADH"/>
+<l:gentext key="and" text="agus"/>
+<l:gentext key="by" text="le"/>
+<l:gentext key="Edited" text="Curtha in eagar"/>
+<l:gentext key="edited" text="Curtha in eagar"/>
+<l:gentext key="Editedby" text="Curtha in eagar ag"/>
+<l:gentext key="editedby" text="Curtha in eagar ag"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="eilimint nach ann"/>
+<l:gentext key="notes" text="Nótaí"/>
+<l:gentext key="Notes" text="Nótaí"/>
+<l:gentext key="Pgs" text="Lgh."/>
+<l:gentext key="pgs" text="Lgh."/>
+<l:gentext key="Revisedby" text="Leasaithe ag: "/>
+<l:gentext key="revisedby" text="Leasaithe ag: "/>
+<l:gentext key="TableNotes" text="Nótaí"/>
+<l:gentext key="tablenotes" text="Nótaí"/>
+<l:gentext key="TableofContents" text="Clár Ábhair"/>
+<l:gentext key="tableofcontents" text="Clár Ábhair"/>
+<l:gentext key="unexpectedelementname" text="Ainm eiliminte gan choinne"/>
+<l:gentext key="unsupported" text="gan tacaíocht"/>
+<l:gentext key="xrefto" text="xref go"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Liosta Cothromóidí"/>
+<l:gentext key="ListofEquations" text="Liosta Cothromóidí"/>
+<l:gentext key="ListofExamples" text="Liosta Samplaí"/>
+<l:gentext key="listofexamples" text="Liosta Samplaí"/>
+<l:gentext key="ListofFigures" text="Liosta Léaráidí"/>
+<l:gentext key="listoffigures" text="Liosta Léaráidí"/>
+<l:gentext key="ListofProcedures" text="Liosta Gnás"/>
+<l:gentext key="listofprocedures" text="Liosta Gnás"/>
+<l:gentext key="listoftables" text="Liosta Táblaí"/>
+<l:gentext key="ListofTables" text="Liosta Táblaí"/>
+<l:gentext key="ListofUnknown" text="Liosta Rudaí Anaithnide"/>
+<l:gentext key="listofunknown" text="Liosta Rudaí Anaithnide"/>
+<l:gentext key="nav-home" text="Baile"/>
+<l:gentext key="nav-next" text="Ar Aghaidh"/>
+<l:gentext key="nav-next-sibling" text="Ar Aghaidh Go Tapa"/>
+<l:gentext key="nav-prev" text="Ar Ais"/>
+<l:gentext key="nav-prev-sibling" text="Ar Ais Go Tapa"/>
+<l:gentext key="nav-up" text="Suas"/>
+<l:gentext key="nav-toc" text="CÁ"/>
+<l:gentext key="Draft" text="Dréacht"/>
+<l:gentext key="above" text="thuas"/>
+<l:gentext key="below" text="thíos"/>
+<l:gentext key="sectioncalled" text="an rannán dar teideal"/>
+<l:gentext key="index symbols" text="Siombailí"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzáéíóú"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Aguisín %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Caibidil %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Cothromóid %n. %t"/>
+<l:template name="example" text="Sampla %n. %t"/>
+<l:template name="figure" text="Léaráid %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Cuid %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Gnás %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Rialacha Táirgthe %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tábla %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Aguisín %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Caibidil %n. %t"/>
+<l:template name="part" text="Cuid %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="F: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="C: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="C: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" i %o"/>
+<l:template name="olink.page.citation" text=" (leathanach %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(leathanach %p)"/>
+<l:template name="docname" text=" i %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(lch. %p)"/>
+<l:template name="Page" text="Leathanach %p"/>
+<l:template name="bridgehead" text="an rannán dar teideal “%t”"/>
+<l:template name="refsection" text="an rannán dar teideal “%t”"/>
+<l:template name="refsect1" text="an rannán dar teideal “%t”"/>
+<l:template name="refsect2" text="an rannán dar teideal “%t”"/>
+<l:template name="refsect3" text="an rannán dar teideal “%t”"/>
+<l:template name="sect1" text="an rannán dar teideal “%t”"/>
+<l:template name="sect2" text="an rannán dar teideal “%t”"/>
+<l:template name="sect3" text="an rannán dar teideal “%t”"/>
+<l:template name="sect4" text="an rannán dar teideal “%t”"/>
+<l:template name="sect5" text="an rannán dar teideal “%t”"/>
+<l:template name="section" text="an rannán dar teideal “%t”"/>
+<l:template name="simplesect" text="an rannán dar teideal “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="F: %n"/>
+<l:template name="appendix" text="Aguisín %n"/>
+<l:template name="bridgehead" text="Rannán %n"/>
+<l:template name="chapter" text="Caibidil %n"/>
+<l:template name="equation" text="Cothromóid %n"/>
+<l:template name="example" text="Sampla %n"/>
+<l:template name="figure" text="Léaráid %n"/>
+<l:template name="part" text="Cuid %n"/>
+<l:template name="procedure" text="Gnás %n"/>
+<l:template name="productionset" text="Rialacha Táirgthe %n"/>
+<l:template name="qandadiv" text="C &amp; F %n"/>
+<l:template name="qandaentry" text="C: %n"/>
+<l:template name="question" text="C: %n"/>
+<l:template name="sect1" text="Rannán %n"/>
+<l:template name="sect2" text="Rannán %n"/>
+<l:template name="sect3" text="Rannán %n"/>
+<l:template name="sect4" text="Rannán %n"/>
+<l:template name="sect5" text="Rannán %n"/>
+<l:template name="section" text="Rannán %n"/>
+<l:template name="table" text="Tábla %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Aguisín %n, %t"/>
+<l:template name="bridgehead" text="Rannán %n, “%t”"/>
+<l:template name="chapter" text="Caibidil %n, %t"/>
+<l:template name="equation" text="Cothromóid %n, “%t”"/>
+<l:template name="example" text="Sampla %n, “%t”"/>
+<l:template name="figure" text="Léaráid %n, “%t”"/>
+<l:template name="part" text="Cuid %n, “%t”"/>
+<l:template name="procedure" text="Gnás %n, “%t”"/>
+<l:template name="productionset" text="Rialacha Táirgthe %n, “%t”"/>
+<l:template name="qandadiv" text="C &amp; F %n, “%t”"/>
+<l:template name="refsect1" text="an rannán dar teideal “%t”"/>
+<l:template name="refsect2" text="an rannán dar teideal “%t”"/>
+<l:template name="refsect3" text="an rannán dar teideal “%t”"/>
+<l:template name="refsection" text="an rannán dar teideal “%t”"/>
+<l:template name="sect1" text="Rannán %n, “%t”"/>
+<l:template name="sect2" text="Rannán %n, “%t”"/>
+<l:template name="sect3" text="Rannán %n, “%t”"/>
+<l:template name="sect4" text="Rannán %n, “%t”"/>
+<l:template name="sect5" text="Rannán %n, “%t”"/>
+<l:template name="section" text="Rannán %n, “%t”"/>
+<l:template name="simplesect" text="an rannán dar teideal “%t”"/>
+<l:template name="table" text="Tábla %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" agus "/>
+<l:template name="seplast" text=", agus "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Féach %t"/>
+<l:template name="seealso" text="Féach Freisin %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Sprioclucht: "/>
+<l:template name="MsgLevel" text="Leibhéal: "/>
+<l:template name="MsgOrig" text="Foinse: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Sainmhíniú: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Eanáir"/>
+<l:template name="February" text="Feabhra"/>
+<l:template name="March" text="Márta"/>
+<l:template name="April" text="Aibreán"/>
+<l:template name="May" text="Bealtaine"/>
+<l:template name="June" text="Meitheamh"/>
+<l:template name="July" text="Iúil"/>
+<l:template name="August" text="Lúnasa"/>
+<l:template name="September" text="Meán Fómhair"/>
+<l:template name="October" text="Deireadh Fómhair"/>
+<l:template name="November" text="Samhain"/>
+<l:template name="December" text="Nollaig"/>
+<l:template name="Monday" text="Dé Luain"/>
+<l:template name="Tuesday" text="Dé Máirt"/>
+<l:template name="Wednesday" text="Dé Céadaoin"/>
+<l:template name="Thursday" text="Déardaoin"/>
+<l:template name="Friday" text="Dé hAoine"/>
+<l:template name="Saturday" text="Dé Sathairn"/>
+<l:template name="Sunday" text="Dé Domhnaigh"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ean"/>
+<l:template name="Feb" text="Feabh"/>
+<l:template name="Mar" text="Márta"/>
+<l:template name="Apr" text="Aib"/>
+<l:template name="May" text="Beal"/>
+<l:template name="Jun" text="Meith"/>
+<l:template name="Jul" text="Iúil"/>
+<l:template name="Aug" text="Lún"/>
+<l:template name="Sep" text="MFómh"/>
+<l:template name="Oct" text="DFómh"/>
+<l:template name="Nov" text="Samh"/>
+<l:template name="Dec" text="Noll"/>
+<l:template name="Mon" text="Luan"/>
+<l:template name="Tue" text="Máirt"/>
+<l:template name="Wed" text="Céad"/>
+<l:template name="Thu" text="Déar"/>
+<l:template name="Fri" text="Aoine"/>
+<l:template name="Sat" text="Sath"/>
+<l:template name="Sun" text="Domh"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x083C Gaelic (IRELAND)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Siombailí</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/gentext.xsl b/docs/xsl-generic/common/gentext.xsl
new file mode 100644
index 00000000..e1da36d9
--- /dev/null
+++ b/docs/xsl-generic/common/gentext.xsl
@@ -0,0 +1,831 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: gentext.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="object.title.template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter" mode="object.title.template">
+ <xsl:choose>
+ <xsl:when test="string($chapter.autolabel) != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="appendix" mode="object.title.template">
+ <xsl:choose>
+ <xsl:when test="string($appendix.autolabel) != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="part" mode="object.title.template">
+ <xsl:choose>
+ <xsl:when test="string($part.autolabel) != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5|simplesect
+ |bridgehead"
+ mode="object.title.template">
+ <xsl:variable name="is.numbered">
+ <xsl:call-template name="label.this.section"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$is.numbered != 0">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="procedure" mode="object.title.template">
+ <xsl:choose>
+ <xsl:when test="$formal.procedures != 0 and title">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ <xsl:text>.formal</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.subtitle.template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'subtitle'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="is.autonumber">
+ <xsl:value-of select="'0'"/>
+</xsl:template>
+
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5"
+ mode="is.autonumber">
+ <xsl:call-template name="label.this.section"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table|equation" mode="is.autonumber">
+ <xsl:value-of select="'1'"/>
+</xsl:template>
+
+<xsl:template match="appendix" mode="is.autonumber">
+ <xsl:value-of select="$appendix.autolabel"/>
+</xsl:template>
+
+<xsl:template match="chapter" mode="is.autonumber">
+ <xsl:value-of select="$chapter.autolabel"/>
+</xsl:template>
+
+<xsl:template match="part" mode="is.autonumber">
+ <xsl:value-of select="$part.autolabel"/>
+</xsl:template>
+
+<xsl:template match="preface" mode="is.autonumber">
+ <xsl:value-of select="$preface.autolabel"/>
+</xsl:template>
+
+<xsl:template match="question|answer" mode="is.autonumber">
+ <xsl:choose>
+ <xsl:when test="$qanda.defaultlabel = 'number'
+ and not(label)">
+ <xsl:value-of select="'1'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'0'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="is.autonumber">
+ <xsl:value-of select="$qandadiv.autolabel"/>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="is.autonumber">
+ <xsl:value-of select="$section.autolabel"/>
+</xsl:template>
+
+<xsl:template match="*" mode="object.xref.template">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+
+ <!-- Is autonumbering on? -->
+ <xsl:variable name="autonumber">
+ <xsl:apply-templates select="." mode="is.autonumber"/>
+ </xsl:variable>
+
+ <xsl:variable name="number-and-title-template">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'xref-number-and-title'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number-template">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'xref-number'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="context">
+ <xsl:choose>
+ <xsl:when test="string($autonumber) != 0
+ and $number-and-title-template != 0
+ and $xref.with.number.and.title != 0">
+ <xsl:value-of select="'xref-number-and-title'"/>
+ </xsl:when>
+ <xsl:when test="string($autonumber) != 0
+ and $number-template != 0">
+ <xsl:value-of select="'xref-number'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'xref'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.title.template"/>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>object.title.markup: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$template"/>
+ </xsl:message>
+-->
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="*" mode="object.title.markup.textonly">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($title)"/>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <!-- Just for consistency in template naming -->
+
+ <xsl:apply-templates select="." mode="titleabbrev.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.subtitle.markup">
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.subtitle.template"/>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="object.xref.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="template">
+ <xsl:choose>
+ <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')">
+ <xsl:call-template name="make.gentext.template">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with(normalize-space($xrefstyle), 'template:')">
+ <xsl:value-of select="substring-after(normalize-space($xrefstyle), 'template:')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.xref.template">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>object.xref.markup: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$purpose"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text>: [</xsl:text>
+ <xsl:value-of select="$template"/>
+ <xsl:text>]</xsl:text>
+ </xsl:message>
+-->
+
+ <xsl:if test="$template = '' and $verbose != 0">
+ <xsl:message>
+ <xsl:text>object.xref.markup: empty xref template</xsl:text>
+ <xsl:text> for linkend="</xsl:text>
+ <xsl:value-of select="@id|@xml:id"/>
+ <xsl:text>" and @xrefstyle="</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="listitem" mode="object.xref.markup">
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="parent::orderedlist">
+ <xsl:variable name="template">
+ <xsl:apply-templates select="." mode="object.xref.template"/>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$verbose != 0">
+ <xsl:message>
+ <xsl:text>Xref is only supported to listitems in an</xsl:text>
+ <xsl:text> orderedlist: </xsl:text>
+ <xsl:value-of select="@id|@xml:id"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="question" mode="object.xref.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="template">
+ <xsl:choose>
+ <!-- This avoids double Q: Q: in xref when defaultlabel=qanda -->
+ <xsl:when test="$deflabel = 'qanda' and not(label)">%n</xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.xref.template">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="template" select="$template"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="substitute-markup">
+ <xsl:param name="template" select="''"/>
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:param name="title" select="''"/>
+ <xsl:param name="subtitle" select="''"/>
+ <xsl:param name="docname" select="''"/>
+ <xsl:param name="label" select="''"/>
+ <xsl:param name="pagenumber" select="''"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($template, '%')">
+ <xsl:value-of select="substring-before($template, '%')"/>
+ <xsl:variable name="candidate"
+ select="substring(substring-after($template, '%'), 1, 1)"/>
+ <xsl:choose>
+ <xsl:when test="$candidate = 't'">
+ <xsl:apply-templates select="." mode="insert.title.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="title">
+ <xsl:choose>
+ <xsl:when test="$title != ''">
+ <xsl:copy-of select="$title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 's'">
+ <xsl:apply-templates select="." mode="insert.subtitle.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="subtitle">
+ <xsl:choose>
+ <xsl:when test="$subtitle != ''">
+ <xsl:copy-of select="$subtitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'n'">
+ <xsl:apply-templates select="." mode="insert.label.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="label">
+ <xsl:choose>
+ <xsl:when test="$label != ''">
+ <xsl:copy-of select="$label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'p'">
+ <xsl:apply-templates select="." mode="insert.pagenumber.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="pagenumber">
+ <xsl:choose>
+ <xsl:when test="$pagenumber != ''">
+ <xsl:copy-of select="$pagenumber"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="pagenumber.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'o'">
+ <!-- olink target document title -->
+ <xsl:apply-templates select="." mode="insert.olink.docname.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="docname">
+ <xsl:choose>
+ <xsl:when test="$docname != ''">
+ <xsl:copy-of select="$docname"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="olink.docname.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = 'd'">
+ <xsl:apply-templates select="." mode="insert.direction.markup">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="direction">
+ <xsl:choose>
+ <xsl:when test="$referrer">
+ <xsl:variable name="referent-is-below">
+ <xsl:for-each select="preceding::xref">
+ <xsl:if test="generate-id(.) = generate-id($referrer)">1</xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$referent-is-below = ''">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'above'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'below'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>Attempt to use %d in gentext with no referrer!</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$candidate = '%' ">
+ <xsl:text>%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>%</xsl:text><xsl:value-of select="$candidate"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- recurse with the rest of the template string -->
+ <xsl:variable name="rest"
+ select="substring($template,
+ string-length(substring-before($template, '%'))+3)"/>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$rest"/>
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="subtitle" select="$subtitle"/>
+ <xsl:with-param name="docname" select="$docname"/>
+ <xsl:with-param name="label" select="$label"/>
+ <xsl:with-param name="pagenumber" select="$pagenumber"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$template"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="make.gentext.template">
+ <xsl:param name="xrefstyle" select="''"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <xsl:param name="target.elem" select="local-name(.)"/>
+
+ <!-- parse xrefstyle to get parts -->
+ <xsl:variable name="parts"
+ select="substring-after(normalize-space($xrefstyle), 'select:')"/>
+
+ <xsl:variable name="labeltype">
+ <xsl:choose>
+ <xsl:when test="contains($parts, 'labelnumber')">
+ <xsl:text>labelnumber</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'labelname')">
+ <xsl:text>labelname</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'label')">
+ <xsl:text>label</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="titletype">
+ <xsl:choose>
+ <xsl:when test="contains($parts, 'quotedtitle')">
+ <xsl:text>quotedtitle</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'title')">
+ <xsl:text>title</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="pagetype">
+ <xsl:choose>
+ <xsl:when test="$insert.olink.page.number = 'no' and
+ local-name($referrer) = 'olink'">
+ <!-- suppress page numbers -->
+ </xsl:when>
+ <xsl:when test="$insert.xref.page.number = 'no' and
+ local-name($referrer) != 'olink'">
+ <!-- suppress page numbers -->
+ </xsl:when>
+ <xsl:when test="contains($parts, 'nopage')">
+ <xsl:text>nopage</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'pagenumber')">
+ <xsl:text>pagenumber</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'pageabbrev')">
+ <xsl:text>pageabbrev</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'Page')">
+ <xsl:text>Page</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'page')">
+ <xsl:text>page</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="docnametype">
+ <xsl:choose>
+ <xsl:when test="($olink.doctitle = 0 or
+ $olink.doctitle = 'no') and
+ local-name($referrer) = 'olink'">
+ <!-- suppress docname -->
+ </xsl:when>
+ <xsl:when test="contains($parts, 'nodocname')">
+ <xsl:text>nodocname</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'docnamelong')">
+ <xsl:text>docnamelong</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($parts, 'docname')">
+ <xsl:text>docname</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$labeltype != ''">
+ <xsl:choose>
+ <xsl:when test="$labeltype = 'labelname'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="local-name($referrer) = 'olink'">
+ <xsl:value-of select="$target.elem"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$labeltype = 'labelnumber'">
+ <xsl:text>%n</xsl:text>
+ </xsl:when>
+ <xsl:when test="$labeltype = 'label'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref-number'"/>
+ <xsl:with-param name="name">
+ <xsl:choose>
+ <xsl:when test="local-name($referrer) = 'olink'">
+ <xsl:value-of select="$target.elem"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="xpath.location"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$titletype != ''">
+ <xsl:value-of select="$xref.label-title.separator"/>
+ </xsl:when>
+ <xsl:when test="$pagetype != ''">
+ <xsl:value-of select="$xref.label-page.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="$titletype != ''">
+ <xsl:choose>
+ <xsl:when test="$titletype = 'title'">
+ <xsl:text>%t</xsl:text>
+ </xsl:when>
+ <xsl:when test="$titletype = 'quotedtitle'">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat" select="'startquote'"/>
+ </xsl:call-template>
+ <xsl:text>%t</xsl:text>
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat" select="'endquote'"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$pagetype != '' and $pagetype != 'nopage'">
+ <xsl:value-of select="$xref.title-page.separator"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+
+ <!-- special case: use regular xref template if just turning off page -->
+ <xsl:if test="($pagetype = 'nopage' or $docnametype = 'nodocname')
+ and local-name($referrer) != 'olink'
+ and $labeltype = ''
+ and $titletype = ''">
+ <xsl:apply-templates select="." mode="object.xref.template">
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:if test="$pagetype != ''">
+ <xsl:choose>
+ <xsl:when test="$pagetype = 'page'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'page'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pagetype = 'Page'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'Page'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pagetype = 'pageabbrev'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'pageabbrev'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pagetype = 'pagenumber'">
+ <xsl:text>%p</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:if>
+
+ <!-- Add reference to other document title -->
+ <xsl:if test="$docnametype != '' and local-name($referrer) = 'olink'">
+ <!-- Any separator should be in the gentext template -->
+ <xsl:choose>
+ <xsl:when test="$docnametype = 'docnamelong'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'docnamelong'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$docnametype = 'docname'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="'docname'"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:if>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/gu.xml b/docs/xsl-generic/common/gu.xml
new file mode 100644
index 00000000..050483e4
--- /dev/null
+++ b/docs/xsl-generic/common/gu.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="gu" english-language-name="Gujarati">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/gu.xml -->
+<!-- * -->
+<!-- * E-mail the edited gu.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="સાર"/>
+<l:gentext key="abstract" text="સાર"/>
+<l:gentext key="Answer" text="જ:"/>
+<l:gentext key="answer" text="જ:"/>
+<l:gentext key="Appendix" text="પરિશિષ્ટ"/>
+<l:gentext key="appendix" text="પરિશિષ્ટ"/>
+<l:gentext key="Article" text="લેખ"/>
+<l:gentext key="article" text="લેખ"/>
+<l:gentext key="Author" text="Author"/>
+<l:gentext key="Bibliography" text="સંદર્ભગ્રંથ"/>
+<l:gentext key="bibliography" text="સંદર્ભગ્રંથ"/>
+<l:gentext key="Book" text="પુસ્તક"/>
+<l:gentext key="book" text="પુસ્તક"/>
+<l:gentext key="CAUTION" text="સાવધાન"/>
+<l:gentext key="Caution" text="સાવધાન"/>
+<l:gentext key="caution" text="સાવધાન"/>
+<l:gentext key="Chapter" text="પ્રકરણ"/>
+<l:gentext key="chapter" text="પ્રકરણ"/>
+<l:gentext key="Colophon" text="ગ્રંથપરિચય"/>
+<l:gentext key="colophon" text="ગ્રંથપરિચય"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="સમર્પણ"/>
+<l:gentext key="dedication" text="સમર્પણ"/>
+<l:gentext key="Edition" text="પ્રકાશન"/>
+<l:gentext key="edition" text="પ્રકાશન"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="સમીકરણ"/>
+<l:gentext key="equation" text="સમીકરણ"/>
+<l:gentext key="Example" text="ઉદાહરણ"/>
+<l:gentext key="example" text="ઉદાહરણ"/>
+<l:gentext key="Figure" text="આકૃતિ"/>
+<l:gentext key="figure" text="આકૃતિ"/>
+<l:gentext key="Glossary" text="શબ્દાવલી"/>
+<l:gentext key="glossary" text="શબ્દાવલી"/>
+<l:gentext key="GlossSee" text="જુઓ"/>
+<l:gentext key="glosssee" text="જુઓ"/>
+<l:gentext key="GlossSeeAlso" text="આપણજુઓ"/>
+<l:gentext key="glossseealso" text="આપણજુઓ"/>
+<l:gentext key="IMPORTANT" text="મહત્વનું"/>
+<l:gentext key="important" text="મહત્વનું"/>
+<l:gentext key="Important" text="મહત્વનું"/>
+<l:gentext key="Index" text="અનુક્રમણિકા"/>
+<l:gentext key="index" text="અનુક્રમણિકા"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="માન્યસૂચન"/>
+<l:gentext key="legalnotice" text="માન્યસૂચન"/>
+<l:gentext key="MsgAud" text="શ્રોતા"/>
+<l:gentext key="msgaud" text="શ્રોતા"/>
+<l:gentext key="MsgLevel" text="સ્તર"/>
+<l:gentext key="msglevel" text="સ્તર"/>
+<l:gentext key="MsgOrig" text="મૂળ"/>
+<l:gentext key="msgorig" text="મૂળ"/>
+<l:gentext key="NOTE" text="નોંધ"/>
+<l:gentext key="Note" text="નોંધ"/>
+<l:gentext key="note" text="નોંધ"/>
+<l:gentext key="Part" text="ભાગ"/>
+<l:gentext key="part" text="ભાગ"/>
+<l:gentext key="Preface" text="પ્રસ્તાવના"/>
+<l:gentext key="preface" text="પ્રસ્તાવના"/>
+<l:gentext key="Procedure" text="પ્રક્રિયા"/>
+<l:gentext key="procedure" text="પ્રક્રિયા"/>
+<l:gentext key="ProductionSet" text="ઉત્પાદન"/>
+<l:gentext key="PubDate" text="Publication Date"/>
+<l:gentext key="pubdate" text="Publication date"/>
+<l:gentext key="Published" text="પ્રકાશિત"/>
+<l:gentext key="published" text="પ્રકાશિત"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="સ:"/>
+<l:gentext key="question" text="સ:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="સંદર્ભ"/>
+<l:gentext key="reference" text="સંદર્ભ"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="નામ"/>
+<l:gentext key="refname" text="નામ"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="સારાંશ"/>
+<l:gentext key="refsynopsisdiv" text="સારાંશ"/>
+<l:gentext key="RevHistory" text="પુનરાવર્તનઈતિહાસ"/>
+<l:gentext key="revhistory" text="પુનરાવર્તનઈતિહાસ"/>
+<l:gentext key="revision" text="પુનરાવર્તન"/>
+<l:gentext key="Revision" text="પુનરાવર્તન"/>
+<l:gentext key="sect1" text="વિભાગ"/>
+<l:gentext key="sect2" text="વિભાગ"/>
+<l:gentext key="sect3" text="વિભાગ"/>
+<l:gentext key="sect4" text="વિભાગ"/>
+<l:gentext key="sect5" text="વિભાગ"/>
+<l:gentext key="section" text="વિભાગ"/>
+<l:gentext key="Section" text="વિભાગ"/>
+<l:gentext key="see" text="જુઓ"/>
+<l:gentext key="See" text="જુઓ"/>
+<l:gentext key="seealso" text="પણજુઓ"/>
+<l:gentext key="Seealso" text="આપણજુઓ"/>
+<l:gentext key="SeeAlso" text="આપણજુઓ"/>
+<l:gentext key="set" text="સુયોજિતકરો"/>
+<l:gentext key="Set" text="સુયોજિતકરો"/>
+<l:gentext key="setindex" text="અનુક્રમણિકાસુયોજિતકરો"/>
+<l:gentext key="SetIndex" text="અનુક્રમણિકાસુયોજિતકરો"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="બાજુવાળીપટ્ટી"/>
+<l:gentext key="step" text="પગલું"/>
+<l:gentext key="Step" text="પગલું"/>
+<l:gentext key="table" text="કોષ્ટક"/>
+<l:gentext key="Table" text="કોષ્ટક"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="મદદ"/>
+<l:gentext key="TIP" text="મદદ"/>
+<l:gentext key="Tip" text="મદદ"/>
+<l:gentext key="Warning" text="ચેતવણી"/>
+<l:gentext key="warning" text="ચેતવણી"/>
+<l:gentext key="WARNING" text="ચેતવણી"/>
+<l:gentext key="and" text="અને"/>
+<l:gentext key="by" text="by"/>
+<l:gentext key="Edited" text="ફેરફારથયેલછે"/>
+<l:gentext key="edited" text="ફેરફારથયેલછે"/>
+<l:gentext key="Editedby" text="દ્વારાફેરફારથયેલછે"/>
+<l:gentext key="editedby" text="દ્વારાફેરફારથયેલછે"/>
+<l:gentext key="in" text="અંદર"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="બિન-વર્તમાનસભ્ય"/>
+<l:gentext key="notes" text="નોંધો"/>
+<l:gentext key="Notes" text="નોંધો"/>
+<l:gentext key="Pgs" text="પાનાંઓ"/>
+<l:gentext key="pgs" text="પાનાંઓ"/>
+<l:gentext key="Revisedby" text="દ્વારાપુનરાવર્તનથયેલ:"/>
+<l:gentext key="revisedby" text="દ્વારાપુનરાવર્તનથયેલ:"/>
+<l:gentext key="TableNotes" text="નોંધો"/>
+<l:gentext key="tablenotes" text="નોંધો"/>
+<l:gentext key="TableofContents" text="વિષયસુચીકોષ્ટક"/>
+<l:gentext key="tableofcontents" text="વિષયસુચીકોષ્ટક"/>
+<l:gentext key="unexpectedelementname" text="અનિચ્છનિયસભ્યનામ"/>
+<l:gentext key="unsupported" text="બિનઆધારભૂત"/>
+<l:gentext key="xrefto" text="xrefto"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="સમીકરણોનીયાદી"/>
+<l:gentext key="ListofEquations" text="સમીકરણોનીયાદી"/>
+<l:gentext key="ListofExamples" text="ઉદાહરણોનીયાદી"/>
+<l:gentext key="listofexamples" text="ઉદાહરણોનીયાદી"/>
+<l:gentext key="ListofFigures" text="આકૃતિઓનીયાદી"/>
+<l:gentext key="listoffigures" text="આકૃતિઓનીયાદી"/>
+<l:gentext key="ListofProcedures" text="પ્રક્રિયાઓનીયાદી"/>
+<l:gentext key="listofprocedures" text="પ્રક્રિયાઓનીયાદી"/>
+<l:gentext key="listoftables" text="કોષ્ટકોનીયાદી"/>
+<l:gentext key="ListofTables" text="કોષ્ટકોનીયાદી"/>
+<l:gentext key="ListofUnknown" text="અજાણોનીયાદી"/>
+<l:gentext key="listofunknown" text="અજાણોનીયાદી"/>
+<l:gentext key="nav-home" text="ઘર"/>
+<l:gentext key="nav-next" text="આગળવધો"/>
+<l:gentext key="nav-next-sibling" text="ઝડપીઆગળધપાવો"/>
+<l:gentext key="nav-prev" text="પહેલાનું"/>
+<l:gentext key="nav-prev-sibling" text="ઝડપીપાછળધપાવો"/>
+<l:gentext key="nav-up" text="ઉપર"/>
+<l:gentext key="nav-toc" text="ToC"/>
+<l:gentext key="Draft" text="ડ્રાફ્ટ"/>
+<l:gentext key="above" text="ઉપર"/>
+<l:gentext key="below" text="નીચે"/>
+<l:gentext key="sectioncalled" text="બોલાવાયેલવિભાગ"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="કખગઘચછજઝટઠડઢનણયરલવસશષહ"/>
+<l:gentext key="uppercase.alpha" text="કખગઘચછજઝટઠડઢનણયરલવસશષહ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="પરિશિષ્ટ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="પ્રકરણ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="સમીકરણ %n. %t"/>
+<l:template name="example" text="ઉદાહરણ %n. %t"/>
+<l:template name="figure" text="આકૃતિ %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ભાગ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="પ્રક્રિયા %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ઉત્પાદન %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="કોષ્ટક %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="પરિશિષ્ટ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="પ્રકરણ %n. %t"/>
+<l:template name="part" text="ભાગ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="સ: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="સ: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="refsection" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="refsect1" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="refsect2" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="refsect3" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="sect1" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="sect2" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="sect3" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="sect4" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="sect5" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="section" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="simplesect" text="બોલાવાયેલવિભાગ “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="જ: %n"/>
+<l:template name="appendix" text="પરિશિષ્ટ %n"/>
+<l:template name="bridgehead" text="વિભાગ %n"/>
+<l:template name="chapter" text="પ્રકરણ %n"/>
+<l:template name="equation" text="સમીકરણ %n"/>
+<l:template name="example" text="ઉદાહરણ %n"/>
+<l:template name="figure" text="આકૃતિ %n"/>
+<l:template name="part" text="ભાગ %n"/>
+<l:template name="procedure" text="પ્રક્રિયા %n"/>
+<l:template name="productionset" text="ઉત્પાદન %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="સ: %n"/>
+<l:template name="question" text="સ: %n"/>
+<l:template name="sect1" text="વિભાગ %n"/>
+<l:template name="sect2" text="વિભાગ %n"/>
+<l:template name="sect3" text="વિભાગ %n"/>
+<l:template name="sect4" text="વિભાગ %n"/>
+<l:template name="sect5" text="વિભાગ %n"/>
+<l:template name="section" text="વિભાગ %n"/>
+<l:template name="table" text="કોષ્ટક %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="પરિશિષ્ટ %n, %t"/>
+<l:template name="bridgehead" text="વિભાગ %n, “%t”"/>
+<l:template name="chapter" text="પ્રકરણ %n, %t"/>
+<l:template name="equation" text="સમીકરણ %n, “%t”"/>
+<l:template name="example" text="ઉદાહરણ %n, “%t”"/>
+<l:template name="figure" text="આકૃતિ %n, “%t”"/>
+<l:template name="part" text="ભાગ %n, “%t”"/>
+<l:template name="procedure" text="પ્રક્રિયા %n, “%t”"/>
+<l:template name="productionset" text="ઉત્પાદન %n, “%t”"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%t”"/>
+<l:template name="refsect1" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="refsect2" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="refsect3" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="refsection" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="sect1" text="વિભાગ %n, “%t”"/>
+<l:template name="sect2" text="વિભાગ %n, “%t”"/>
+<l:template name="sect3" text="વિભાગ %n, “%t”"/>
+<l:template name="sect4" text="વિભાગ %n, “%t”"/>
+<l:template name="sect5" text="વિભાગ %n, “%t”"/>
+<l:template name="section" text="વિભાગ %n, “%t”"/>
+<l:template name="simplesect" text="બોલાવાયેલવિભાગ “%t”"/>
+<l:template name="table" text="કોષ્ટક %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" અને "/>
+<l:template name="seplast" text=", અને "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="જુઓ %t"/>
+<l:template name="seealso" text="આપણજુઓ %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="શ્રોતા: "/>
+<l:template name="MsgLevel" text="સ્તર: "/>
+<l:template name="MsgOrig" text="મૂળ: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January"/>
+<l:template name="February" text="February"/>
+<l:template name="March" text="March"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="May"/>
+<l:template name="June" text="June"/>
+<l:template name="July" text="July"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="October"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="Monday"/>
+<l:template name="Tuesday" text="Tuesday"/>
+<l:template name="Wednesday" text="Wednesday"/>
+<l:template name="Thursday" text="Thursday"/>
+<l:template name="Friday" text="Friday"/>
+<l:template name="Saturday" text="Saturday"/>
+<l:template name="Sunday" text="Sunday"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Mon"/>
+<l:template name="Tue" text="Tue"/>
+<l:template name="Wed" text="Wed"/>
+<l:template name="Thu" text="Thu"/>
+<l:template name="Fri" text="Fri"/>
+<l:template name="Sat" text="Sat"/>
+<l:template name="Sun" text="Sun"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0447 Gujarati"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/he.xml b/docs/xsl-generic/common/he.xml
new file mode 100644
index 00000000..8e234b8d
--- /dev/null
+++ b/docs/xsl-generic/common/he.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="he" english-language-name="Hebrew">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/he.xml -->
+<!-- * -->
+<!-- * E-mail the edited he.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="סיכום"/>
+<l:gentext key="abstract" text="סיכום"/>
+<l:gentext key="Answer" text="ת:"/>
+<l:gentext key="answer" text="ת:"/>
+<l:gentext key="Appendix" text="נספח"/>
+<l:gentext key="appendix" text="נספח"/>
+<l:gentext key="Article" text="מאמר"/>
+<l:gentext key="article" text="מאמר"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="ביבליוגרפיה"/>
+<l:gentext key="bibliography" text="ביבליוגרפיה"/>
+<l:gentext key="Book" text="ספר"/>
+<l:gentext key="book" text="ספר"/>
+<l:gentext key="CAUTION" text="אזהרה"/>
+<l:gentext key="Caution" text="אזהרה"/>
+<l:gentext key="caution" text="אזהרה"/>
+<l:gentext key="Chapter" text="פרק"/>
+<l:gentext key="chapter" text="פרק"/>
+<l:gentext key="Colophon" text="קולופון"/>
+<l:gentext key="colophon" text="קולופון"/>
+<l:gentext key="Copyright" text="זכויות יוצרים"/>
+<l:gentext key="copyright" text="זכויות יוצרים"/>
+<l:gentext key="Dedication" text="הקדשה"/>
+<l:gentext key="dedication" text="הקדשה"/>
+<l:gentext key="Edition" text="מהדורה"/>
+<l:gentext key="edition" text="מהדורה"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="משוואה"/>
+<l:gentext key="equation" text="משוואה"/>
+<l:gentext key="Example" text="דוגמה"/>
+<l:gentext key="example" text="דוגמה"/>
+<l:gentext key="Figure" text="איור"/>
+<l:gentext key="figure" text="איור"/>
+<l:gentext key="Glossary" text="מילון מונחים"/>
+<l:gentext key="glossary" text="מילון מונחים"/>
+<l:gentext key="GlossSee" text="ראה"/>
+<l:gentext key="glosssee" text="ראה"/>
+<l:gentext key="GlossSeeAlso" text="ראה גם"/>
+<l:gentext key="glossseealso" text="ראה גם"/>
+<l:gentext key="IMPORTANT" text="חשוב"/>
+<l:gentext key="important" text="חשוב"/>
+<l:gentext key="Important" text="חשוב"/>
+<l:gentext key="Index" text="אינדקס"/>
+<l:gentext key="index" text="אינדקס"/>
+<l:gentext key="ISBN" text="מספר ספר סטנדרטי בינלאומי"/>
+<l:gentext key="isbn" text="מספר ספר סטנדרטי בינלאומי"/>
+<l:gentext key="LegalNotice" text="הודעה משפטית"/>
+<l:gentext key="legalnotice" text="הודעה משפטית"/>
+<l:gentext key="MsgAud" text="קהל יעד"/>
+<l:gentext key="msgaud" text="קהל יעד"/>
+<l:gentext key="MsgLevel" text="רמה"/>
+<l:gentext key="msglevel" text="רמה"/>
+<l:gentext key="MsgOrig" text="מקור"/>
+<l:gentext key="msgorig" text="מקור"/>
+<l:gentext key="NOTE" text="שים לב"/>
+<l:gentext key="Note" text="שים לב"/>
+<l:gentext key="note" text="שים לב"/>
+<l:gentext key="Part" text="חלק"/>
+<l:gentext key="part" text="חלק"/>
+<l:gentext key="Preface" text="מבוא"/>
+<l:gentext key="preface" text="מבוא"/>
+<l:gentext key="Procedure" text="הליך"/>
+<l:gentext key="procedure" text="הליך"/>
+<l:gentext key="ProductionSet" text="ייצור"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="הוצא לאור"/>
+<l:gentext key="published" text="הוצא לאור"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="ת ו ש"/>
+<l:gentext key="qandadiv" text="ת ו ש"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ש:"/>
+<l:gentext key="question" text="ש:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="מראה מקום"/>
+<l:gentext key="reference" text="מראה מקום"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="שם"/>
+<l:gentext key="refname" text="שם"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="תמצית"/>
+<l:gentext key="refsynopsisdiv" text="תמצית"/>
+<l:gentext key="RevHistory" text="היסטוריית גירסאות"/>
+<l:gentext key="revhistory" text="היסטוריית גירסאות"/>
+<l:gentext key="revision" text="גירסה"/>
+<l:gentext key="Revision" text="גירסה"/>
+<l:gentext key="sect1" text="סעיף"/>
+<l:gentext key="sect2" text="סעיף"/>
+<l:gentext key="sect3" text="סעיף"/>
+<l:gentext key="sect4" text="סעיף"/>
+<l:gentext key="sect5" text="סעיף"/>
+<l:gentext key="section" text="סעיף"/>
+<l:gentext key="Section" text="סעיף"/>
+<l:gentext key="see" text="ראה"/>
+<l:gentext key="See" text="ראה"/>
+<l:gentext key="seealso" text="ראה גם"/>
+<l:gentext key="Seealso" text="ראה גם"/>
+<l:gentext key="SeeAlso" text="ראה גם"/>
+<l:gentext key="set" text="סידרה"/>
+<l:gentext key="Set" text="סידרה"/>
+<l:gentext key="setindex" text="אינקדקס סדרות"/>
+<l:gentext key="SetIndex" text="אינדקס סדרות"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="פס צדדי"/>
+<l:gentext key="step" text="צעד"/>
+<l:gentext key="Step" text="צעד"/>
+<l:gentext key="table" text="טבלה"/>
+<l:gentext key="Table" text="טבלה"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="עצה"/>
+<l:gentext key="TIP" text="עצה"/>
+<l:gentext key="Tip" text="עצה"/>
+<l:gentext key="Warning" text="אזהרה"/>
+<l:gentext key="warning" text="אזהרה"/>
+<l:gentext key="WARNING" text="אזהרה"/>
+<l:gentext key="and" text="ו"/>
+<l:gentext key="by" text="מאת"/>
+<l:gentext key="Edited" text="נערך"/>
+<l:gentext key="edited" text="נערך"/>
+<l:gentext key="Editedby" text="נערך על ידי"/>
+<l:gentext key="editedby" text="נערך על ידי"/>
+<l:gentext key="in" text="ב"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="מרכיב שאינו קיים"/>
+<l:gentext key="notes" text="הערות"/>
+<l:gentext key="Notes" text="הערות"/>
+<l:gentext key="Pgs" text="עמודים"/>
+<l:gentext key="pgs" text="עמודים"/>
+<l:gentext key="Revisedby" text="הוגה על ידי: "/>
+<l:gentext key="revisedby" text="הוגה על ידי: "/>
+<l:gentext key="TableNotes" text="הערות"/>
+<l:gentext key="tablenotes" text="הערות"/>
+<l:gentext key="TableofContents" text="תוכן העניינים"/>
+<l:gentext key="tableofcontents" text="תוכן העניינים"/>
+<l:gentext key="unexpectedelementname" text="שם מרכיב בלתי צפוי"/>
+<l:gentext key="unsupported" text="לא נתמך"/>
+<l:gentext key="xrefto" text="התייחסות צולבת אל"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="רשימת משוואות"/>
+<l:gentext key="ListofEquations" text="רשימת משוואות"/>
+<l:gentext key="ListofExamples" text="רשימת דוגמאות"/>
+<l:gentext key="listofexamples" text="רשימת דוגמאות"/>
+<l:gentext key="ListofFigures" text="רשימת איורים"/>
+<l:gentext key="listoffigures" text="רשימת איורים"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="רשימת טבלאות"/>
+<l:gentext key="ListofTables" text="רשימת טבלאות"/>
+<l:gentext key="ListofUnknown" text="רשימה של מרכיבים לא ידועים"/>
+<l:gentext key="listofunknown" text="רשימה של מרכיבים לא ידועים"/>
+<l:gentext key="nav-home" text="ראשי"/>
+<l:gentext key="nav-next" text="הבא"/>
+<l:gentext key="nav-next-sibling" text="דלג לסוף"/>
+<l:gentext key="nav-prev" text="הקודם"/>
+<l:gentext key="nav-prev-sibling" text="חזור להתחלה"/>
+<l:gentext key="nav-up" text="למעלה"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="טיוטה"/>
+<l:gentext key="above" text="למעלה"/>
+<l:gentext key="below" text="למטה"/>
+<l:gentext key="sectioncalled" text="הסעיף שנקרא"/>
+<l:gentext key="index symbols" text="סמלים"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="נספח %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="פרק %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="משוואה %n. %t"/>
+<l:template name="example" text="דוגמה %n. %t"/>
+<l:template name="figure" text="איור %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="חלק %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="הליך %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ייצור %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="טבלה %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="נספח %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="פרק %n. %t"/>
+<l:template name="part" text="חלק %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ש: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ש: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="הסעיף שנקרא “%t”"/>
+<l:template name="refsection" text="הסעיף שנקרא “%t”"/>
+<l:template name="refsect1" text="הסעיף שנקרא “%t”"/>
+<l:template name="refsect2" text="הסעיף שנקרא “%t”"/>
+<l:template name="refsect3" text="הסעיף שנקרא “%t”"/>
+<l:template name="sect1" text="הסעיף שנקרא “%t”"/>
+<l:template name="sect2" text="הסעיף שנקרא “%t”"/>
+<l:template name="sect3" text="הסעיף שנקרא “%t”"/>
+<l:template name="sect4" text="הסעיף שנקרא “%t”"/>
+<l:template name="sect5" text="הסעיף שנקרא “%t”"/>
+<l:template name="section" text="הסעיף שנקרא “%t”"/>
+<l:template name="simplesect" text="הסעיף שנקרא “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ת: %n"/>
+<l:template name="appendix" text="נספח %n"/>
+<l:template name="bridgehead" text="סעיף %n"/>
+<l:template name="chapter" text="פרק %n"/>
+<l:template name="equation" text="משוואה %n"/>
+<l:template name="example" text="דוגמה %n"/>
+<l:template name="figure" text="איור %n"/>
+<l:template name="part" text="חלק %n"/>
+<l:template name="procedure" text="הליך %n"/>
+<l:template name="productionset" text="ייצור %n"/>
+<l:template name="qandadiv" text="ת ו ש %n"/>
+<l:template name="qandaentry" text="ש: %n"/>
+<l:template name="question" text="ש: %n"/>
+<l:template name="sect1" text="סעיף %n"/>
+<l:template name="sect2" text="סעיף %n"/>
+<l:template name="sect3" text="סעיף %n"/>
+<l:template name="sect4" text="סעיף %n"/>
+<l:template name="sect5" text="סעיף %n"/>
+<l:template name="section" text="סעיף %n"/>
+<l:template name="table" text="טבלה %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="נספח %n, %t"/>
+<l:template name="bridgehead" text="סעיף %n, “%t”"/>
+<l:template name="chapter" text="פרק %n, %t"/>
+<l:template name="equation" text="משוואה %n, “%t”"/>
+<l:template name="example" text="דוגמה %n, “%t”"/>
+<l:template name="figure" text="איור %n, “%t”"/>
+<l:template name="part" text="חלק %n, “%t”"/>
+<l:template name="procedure" text="הליך %n, “%t”"/>
+<l:template name="productionset" text="ייצור %n, “%t”"/>
+<l:template name="qandadiv" text="ת ו ש %n, “%t”"/>
+<l:template name="refsect1" text="הסעיף שנקרא “%t”"/>
+<l:template name="refsect2" text="הסעיף שנקרא “%t”"/>
+<l:template name="refsect3" text="הסעיף שנקרא “%t”"/>
+<l:template name="refsection" text="הסעיף שנקרא “%t”"/>
+<l:template name="sect1" text="סעיף %n, “%t”"/>
+<l:template name="sect2" text="סעיף %n, “%t”"/>
+<l:template name="sect3" text="סעיף %n, “%t”"/>
+<l:template name="sect4" text="סעיף %n, “%t”"/>
+<l:template name="sect5" text="סעיף %n, “%t”"/>
+<l:template name="section" text="סעיף %n, “%t”"/>
+<l:template name="simplesect" text="הסעיף שנקרא “%t”"/>
+<l:template name="table" text="טבלה %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ו "/>
+<l:template name="seplast" text=", ו "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ראה %t"/>
+<l:template name="seealso" text="ראה גם %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="קהל יעד: "/>
+<l:template name="MsgLevel" text="רמה: "/>
+<l:template name="MsgOrig" text="מקור: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040d Hebrew (ISRAEL)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/hi.xml b/docs/xsl-generic/common/hi.xml
new file mode 100644
index 00000000..690a2cd2
--- /dev/null
+++ b/docs/xsl-generic/common/hi.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="hi" english-language-name="Hindi">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/hi.xml -->
+<!-- * -->
+<!-- * E-mail the edited hi.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="सार"/>
+<l:gentext key="abstract" text="सार"/>
+<l:gentext key="Answer" text="उ:"/>
+<l:gentext key="answer" text="उ:"/>
+<l:gentext key="Appendix" text="परिशिष्ट"/>
+<l:gentext key="appendix" text="परिशिष्ट"/>
+<l:gentext key="Article" text="आलेख"/>
+<l:gentext key="article" text="आलेख"/>
+<l:gentext key="Author" text="Author"/>
+<l:gentext key="Bibliography" text="संदर्भ-सूची"/>
+<l:gentext key="bibliography" text="संदर्भ-सूची"/>
+<l:gentext key="Book" text="पुस्तक"/>
+<l:gentext key="book" text="पुस्तक"/>
+<l:gentext key="CAUTION" text="सावधानी"/>
+<l:gentext key="Caution" text="सावधानी"/>
+<l:gentext key="caution" text="सावधानी"/>
+<l:gentext key="Chapter" text="अध्याय"/>
+<l:gentext key="chapter" text="अध्याय"/>
+<l:gentext key="Colophon" text="पुस्तकपरिचय"/>
+<l:gentext key="colophon" text="पुस्तकपरिचय"/>
+<l:gentext key="Copyright" text="कॉपीराइट"/>
+<l:gentext key="copyright" text="कॉपीराइट"/>
+<l:gentext key="Dedication" text="समर्पण"/>
+<l:gentext key="dedication" text="समर्पण"/>
+<l:gentext key="Edition" text="संस्करण"/>
+<l:gentext key="edition" text="संस्करण"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="समीकरण"/>
+<l:gentext key="equation" text="समीकरण"/>
+<l:gentext key="Example" text="उदाहरण"/>
+<l:gentext key="example" text="उदाहरण"/>
+<l:gentext key="Figure" text="चित्र"/>
+<l:gentext key="figure" text="चित्र"/>
+<l:gentext key="Glossary" text="शब्दकोष"/>
+<l:gentext key="glossary" text="शब्दकोष"/>
+<l:gentext key="GlossSee" text="देखें"/>
+<l:gentext key="glosssee" text="देखें"/>
+<l:gentext key="GlossSeeAlso" text="इसेभीदेखें"/>
+<l:gentext key="glossseealso" text="इसेभीदेखें"/>
+<l:gentext key="IMPORTANT" text="महत्वपूर्ण"/>
+<l:gentext key="important" text="महत्वपूर्ण"/>
+<l:gentext key="Important" text="महत्वपूर्ण"/>
+<l:gentext key="Index" text="विषय-सूची"/>
+<l:gentext key="index" text="विषय-सूची"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="वैधानिकसूचना"/>
+<l:gentext key="legalnotice" text="वैधानिकसूचना"/>
+<l:gentext key="MsgAud" text="श्रोता"/>
+<l:gentext key="msgaud" text="श्रोता"/>
+<l:gentext key="MsgLevel" text="स्तर"/>
+<l:gentext key="msglevel" text="स्तर"/>
+<l:gentext key="MsgOrig" text="मूल"/>
+<l:gentext key="msgorig" text="मूल"/>
+<l:gentext key="NOTE" text="नोट"/>
+<l:gentext key="Note" text="नोट"/>
+<l:gentext key="note" text="नोट"/>
+<l:gentext key="Part" text="हिस्सा"/>
+<l:gentext key="part" text="हिस्सा"/>
+<l:gentext key="Preface" text="प्रस्तावना"/>
+<l:gentext key="preface" text="प्रस्तावना"/>
+<l:gentext key="Procedure" text="प्रक्रिया"/>
+<l:gentext key="procedure" text="प्रक्रिया"/>
+<l:gentext key="ProductionSet" text="उत्पादन"/>
+<l:gentext key="PubDate" text="Publication Date"/>
+<l:gentext key="pubdate" text="Publication date"/>
+<l:gentext key="Published" text="प्रकाशित"/>
+<l:gentext key="published" text="प्रकाशित"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="प्र:"/>
+<l:gentext key="question" text="प्र:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="संदर्भ"/>
+<l:gentext key="reference" text="संदर्भ"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="नाम"/>
+<l:gentext key="refname" text="नाम"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="सारांश"/>
+<l:gentext key="refsynopsisdiv" text="सारांश"/>
+<l:gentext key="RevHistory" text="पुनरीक्षणइतिहास"/>
+<l:gentext key="revhistory" text="पुनरीक्षणइतिहास"/>
+<l:gentext key="revision" text="पुनरीक्षण"/>
+<l:gentext key="Revision" text="पुनरीक्षण"/>
+<l:gentext key="sect1" text="खंड"/>
+<l:gentext key="sect2" text="खंड"/>
+<l:gentext key="sect3" text="खंड"/>
+<l:gentext key="sect4" text="खंड"/>
+<l:gentext key="sect5" text="खंड"/>
+<l:gentext key="section" text="खंड"/>
+<l:gentext key="Section" text="खंड"/>
+<l:gentext key="see" text="देखें"/>
+<l:gentext key="See" text="देखें"/>
+<l:gentext key="seealso" text="इसेभीदेखें"/>
+<l:gentext key="Seealso" text="इसेभीदेखें"/>
+<l:gentext key="SeeAlso" text="इसेभीदेखें"/>
+<l:gentext key="set" text="व्यवस्थितकरें"/>
+<l:gentext key="Set" text="व्यवस्थितकरें"/>
+<l:gentext key="setindex" text="विषयसूचीव्यवस्थितकरें"/>
+<l:gentext key="SetIndex" text="विषयसूचीव्यवस्थितकरें"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="साइडबार"/>
+<l:gentext key="step" text="चरण"/>
+<l:gentext key="Step" text="चरण"/>
+<l:gentext key="table" text="तालिका"/>
+<l:gentext key="Table" text="तालिका"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="संकेत"/>
+<l:gentext key="TIP" text="संकेत"/>
+<l:gentext key="Tip" text="संकेत"/>
+<l:gentext key="Warning" text="चेतावनी"/>
+<l:gentext key="warning" text="चेतावनी"/>
+<l:gentext key="WARNING" text="चेतावनी"/>
+<l:gentext key="and" text="और"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="संपादित"/>
+<l:gentext key="edited" text="संपादित"/>
+<l:gentext key="Editedby" text="इनकेद्वारासंपादित"/>
+<l:gentext key="editedby" text="इनकेद्वारासंपादित"/>
+<l:gentext key="in" text="अंदर"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="अनुपस्थिततत्व"/>
+<l:gentext key="notes" text="नोट्स"/>
+<l:gentext key="Notes" text="नोट्स"/>
+<l:gentext key="Pgs" text="पृष्ठ"/>
+<l:gentext key="pgs" text="पृष्ठ"/>
+<l:gentext key="Revisedby" text="पुनरीक्षणकर्ता:"/>
+<l:gentext key="revisedby" text="पुनरीक्षणकर्ता:"/>
+<l:gentext key="TableNotes" text="नोट्स"/>
+<l:gentext key="tablenotes" text="नोट्स"/>
+<l:gentext key="TableofContents" text="विषय-सूची"/>
+<l:gentext key="tableofcontents" text="विषय-सूची"/>
+<l:gentext key="unexpectedelementname" text="अप्रत्याशिततत्वनाम"/>
+<l:gentext key="unsupported" text="असमर्थित"/>
+<l:gentext key="xrefto" text="xrefto"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="समीकरणसूची"/>
+<l:gentext key="ListofEquations" text="समीकरणसूची"/>
+<l:gentext key="ListofExamples" text="उदाहरणसूची"/>
+<l:gentext key="listofexamples" text="उदाहरणसूची"/>
+<l:gentext key="ListofFigures" text="चित्रसूची"/>
+<l:gentext key="listoffigures" text="चित्रसूची"/>
+<l:gentext key="ListofProcedures" text="प्रक्रियासूची"/>
+<l:gentext key="listofprocedures" text="प्रक्रियासूची"/>
+<l:gentext key="listoftables" text="तालिकासूची"/>
+<l:gentext key="ListofTables" text="तालिकासूची"/>
+<l:gentext key="ListofUnknown" text="अज्ञातकीसूची"/>
+<l:gentext key="listofunknown" text="अज्ञातकीसूची"/>
+<l:gentext key="nav-home" text="घर"/>
+<l:gentext key="nav-next" text="आगे"/>
+<l:gentext key="nav-next-sibling" text="द्रुतअग्रसारण"/>
+<l:gentext key="nav-prev" text="पीछे"/>
+<l:gentext key="nav-prev-sibling" text="द्रुतपश्चरण"/>
+<l:gentext key="nav-up" text="ऊपर"/>
+<l:gentext key="nav-toc" text="अंतर्वस्तुतालिका"/>
+<l:gentext key="Draft" text="ड्राफ्ट"/>
+<l:gentext key="above" text="ऊपर"/>
+<l:gentext key="below" text="नीचे"/>
+<l:gentext key="sectioncalled" text="यहखंडकहलाताहै"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="परिशिष्ट %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="अध्याय %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="समीकरण %n. %t"/>
+<l:template name="example" text="उदाहरण %n. %t"/>
+<l:template name="figure" text="चित्र %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="हिस्सा %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="प्रक्रिया %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="उत्पादन %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="तालिका %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="परिशिष्ट %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="अध्याय %n. %t"/>
+<l:template name="part" text="हिस्सा %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="प्र: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="प्र: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="refsection" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="refsect1" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="refsect2" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="refsect3" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="sect1" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="sect2" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="sect3" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="sect4" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="sect5" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="section" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="simplesect" text="यहखंडकहलाताहै “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="उ: %n"/>
+<l:template name="appendix" text="परिशिष्ट %n"/>
+<l:template name="bridgehead" text="खंड %n"/>
+<l:template name="chapter" text="अध्याय %n"/>
+<l:template name="equation" text="समीकरण %n"/>
+<l:template name="example" text="उदाहरण %n"/>
+<l:template name="figure" text="चित्र %n"/>
+<l:template name="part" text="हिस्सा %n"/>
+<l:template name="procedure" text="प्रक्रिया %n"/>
+<l:template name="productionset" text="उत्पादन %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="प्र: %n"/>
+<l:template name="question" text="प्र: %n"/>
+<l:template name="sect1" text="खंड %n"/>
+<l:template name="sect2" text="खंड %n"/>
+<l:template name="sect3" text="खंड %n"/>
+<l:template name="sect4" text="खंड %n"/>
+<l:template name="sect5" text="खंड %n"/>
+<l:template name="section" text="खंड %n"/>
+<l:template name="table" text="तालिका %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="परिशिष्ट %n, %t"/>
+<l:template name="bridgehead" text="खंड %n, “%t”"/>
+<l:template name="chapter" text="अध्याय %n, %t"/>
+<l:template name="equation" text="समीकरण %n, “%t”"/>
+<l:template name="example" text="उदाहरण %n, “%t”"/>
+<l:template name="figure" text="चित्र %n, “%t”"/>
+<l:template name="part" text="हिस्सा %n, “%t”"/>
+<l:template name="procedure" text="प्रक्रिया %n, “%t”"/>
+<l:template name="productionset" text="उत्पादन %n, “%t”"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%t”"/>
+<l:template name="refsect1" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="refsect2" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="refsect3" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="refsection" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="sect1" text="खंड %n, “%t”"/>
+<l:template name="sect2" text="खंड %n, “%t”"/>
+<l:template name="sect3" text="खंड %n, “%t”"/>
+<l:template name="sect4" text="खंड %n, “%t”"/>
+<l:template name="sect5" text="खंड %n, “%t”"/>
+<l:template name="section" text="खंड %n, “%t”"/>
+<l:template name="simplesect" text="यहखंडकहलाताहै “%t”"/>
+<l:template name="table" text="तालिका %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" और "/>
+<l:template name="seplast" text=", और "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="देखें %t"/>
+<l:template name="seealso" text="इसेभीदेखें %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="श्रोता: "/>
+<l:template name="MsgLevel" text="स्तर: "/>
+<l:template name="MsgOrig" text="मूल: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January"/>
+<l:template name="February" text="February"/>
+<l:template name="March" text="March"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="May"/>
+<l:template name="June" text="June"/>
+<l:template name="July" text="July"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="October"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="Monday"/>
+<l:template name="Tuesday" text="Tuesday"/>
+<l:template name="Wednesday" text="Wednesday"/>
+<l:template name="Thursday" text="Thursday"/>
+<l:template name="Friday" text="Friday"/>
+<l:template name="Saturday" text="Saturday"/>
+<l:template name="Sunday" text="Sunday"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Mon"/>
+<l:template name="Tue" text="Tue"/>
+<l:template name="Wed" text="Wed"/>
+<l:template name="Thu" text="Thu"/>
+<l:template name="Fri" text="Fri"/>
+<l:template name="Sat" text="Sat"/>
+<l:template name="Sun" text="Sun"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0439 Hindi"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/hr.xml b/docs/xsl-generic/common/hr.xml
new file mode 100644
index 00000000..d8378e4d
--- /dev/null
+++ b/docs/xsl-generic/common/hr.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="hr" english-language-name="Croatian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/hr.xml -->
+<!-- * -->
+<!-- * E-mail the edited hr.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sažetak"/>
+<l:gentext key="abstract" text="Sažetak"/>
+<l:gentext key="Answer" text="Odgovor:"/>
+<l:gentext key="answer" text="Odgovor:"/>
+<l:gentext key="Appendix" text="Dodatak"/>
+<l:gentext key="appendix" text="dodatak"/>
+<l:gentext key="Article" text="Članak"/>
+<l:gentext key="article" text="Članak"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Literatura"/>
+<l:gentext key="bibliography" text="Literatura"/>
+<l:gentext key="Book" text="Knjiga"/>
+<l:gentext key="book" text="Knjiga"/>
+<l:gentext key="CAUTION" text="OPREZ"/>
+<l:gentext key="Caution" text="Oprez"/>
+<l:gentext key="caution" text="Oprez"/>
+<l:gentext key="Chapter" text="Poglavlje"/>
+<l:gentext key="chapter" text="poglavlje"/>
+<l:gentext key="Colophon" text="Impresum"/>
+<l:gentext key="colophon" text="Impresum"/>
+<l:gentext key="Copyright" text="Autorska prava"/>
+<l:gentext key="copyright" text="Autorska prava"/>
+<l:gentext key="Dedication" text="Posveta"/>
+<l:gentext key="dedication" text="Posveta"/>
+<l:gentext key="Edition" text="Izdanje"/>
+<l:gentext key="edition" text="Izdanje"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Jednadžba"/>
+<l:gentext key="equation" text="Jednadžba"/>
+<l:gentext key="Example" text="Primjer"/>
+<l:gentext key="example" text="Primjer"/>
+<l:gentext key="Figure" text="Slika"/>
+<l:gentext key="figure" text="Slika"/>
+<l:gentext key="Glossary" text="Rječnik"/>
+<l:gentext key="glossary" text="Rječnik"/>
+<l:gentext key="GlossSee" text="Vidi"/>
+<l:gentext key="glosssee" text="Vidi"/>
+<l:gentext key="GlossSeeAlso" text="Vidi i"/>
+<l:gentext key="glossseealso" text="Vidi i"/>
+<l:gentext key="IMPORTANT" text="VAŽNO"/>
+<l:gentext key="important" text="Važno"/>
+<l:gentext key="Important" text="Važno"/>
+<l:gentext key="Index" text="Kazalo"/>
+<l:gentext key="index" text="Kazalo"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Pravne odredbe"/>
+<l:gentext key="legalnotice" text="Pravne odredbe"/>
+<l:gentext key="MsgAud" text="Primatelji"/>
+<l:gentext key="msgaud" text="Primatelji"/>
+<l:gentext key="MsgLevel" text="Razina"/>
+<l:gentext key="msglevel" text="Razina"/>
+<l:gentext key="MsgOrig" text="Izvor"/>
+<l:gentext key="msgorig" text="Izvor"/>
+<l:gentext key="NOTE" text="BILJEŠKA"/>
+<l:gentext key="Note" text="Bilješka"/>
+<l:gentext key="note" text="Bilješka"/>
+<l:gentext key="Part" text="Dio"/>
+<l:gentext key="part" text="Dio"/>
+<l:gentext key="Preface" text="Predgovor"/>
+<l:gentext key="preface" text="Predgovor"/>
+<l:gentext key="Procedure" text="Postupak"/>
+<l:gentext key="procedure" text="Postupak"/>
+<l:gentext key="ProductionSet" text="Produkcija"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Objavljeno"/>
+<l:gentext key="published" text="Objavljeno"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Pitanje i Odgovor"/>
+<l:gentext key="qandadiv" text="Pitanje i Odgovor"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Pitanje:"/>
+<l:gentext key="question" text="Pitanje:"/>
+<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="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Ime"/>
+<l:gentext key="refname" text="Ime"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Pregled"/>
+<l:gentext key="refsynopsisdiv" text="Pregled"/>
+<l:gentext key="RevHistory" text="Povijest preinaka"/>
+<l:gentext key="revhistory" text="Povijest preinaka"/>
+<l:gentext key="revision" text="Preinaka"/>
+<l:gentext key="Revision" text="Preinaka"/>
+<l:gentext key="sect1" text="Odjeljak"/>
+<l:gentext key="sect2" text="Odjeljak"/>
+<l:gentext key="sect3" text="Odjeljak"/>
+<l:gentext key="sect4" text="Odjeljak"/>
+<l:gentext key="sect5" text="Odjeljak"/>
+<l:gentext key="section" text="Odjeljak"/>
+<l:gentext key="Section" text="Odjeljak"/>
+<l:gentext key="see" text="vidi"/>
+<l:gentext key="See" text="See" lang="en"/>
+<l:gentext key="seealso" text="vidi i"/>
+<l:gentext key="Seealso" text="See also" lang="en"/>
+<l:gentext key="SeeAlso" text="See Also" lang="en"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Kazalo seta"/>
+<l:gentext key="SetIndex" text="Kazalo seta"/>
+<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="Tablica"/>
+<l:gentext key="Table" text="Tablica"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Savjet"/>
+<l:gentext key="TIP" text="SAVJET"/>
+<l:gentext key="Tip" text="Savjet"/>
+<l:gentext key="Warning" text="Upozorenje"/>
+<l:gentext key="warning" text="Upozorenje"/>
+<l:gentext key="WARNING" text="UPOZORENJE"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text="po"/>
+<l:gentext key="Edited" text="Uredio/la"/>
+<l:gentext key="edited" text="Uredio/la"/>
+<l:gentext key="Editedby" text="Uredio/la"/>
+<l:gentext key="editedby" text="Uredio/la"/>
+<l:gentext key="in" text="u"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="nepostojeći element"/>
+<l:gentext key="notes" text="Bilješke"/>
+<l:gentext key="Notes" text="Bilješke"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="Str."/>
+<l:gentext key="Revisedby" text="Promijenjeno po: "/>
+<l:gentext key="revisedby" text="Promijenjeno po: "/>
+<l:gentext key="TableNotes" text="Napomene"/>
+<l:gentext key="tablenotes" text="Napomene"/>
+<l:gentext key="TableofContents" text="Sadržaj"/>
+<l:gentext key="tableofcontents" text="Sadržaj"/>
+<l:gentext key="unexpectedelementname" text="Neočekivano ime elementa"/>
+<l:gentext key="unsupported" text="nepodržano"/>
+<l:gentext key="xrefto" text="xref za"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Popis jednadžbi"/>
+<l:gentext key="ListofEquations" text="Popis jednadžbi"/>
+<l:gentext key="ListofExamples" text="Popis primjera"/>
+<l:gentext key="listofexamples" text="Popis primjera"/>
+<l:gentext key="ListofFigures" text="Popis slika"/>
+<l:gentext key="listoffigures" text="Popis slika"/>
+<l:gentext key="ListofProcedures" text="Popis postupaka"/>
+<l:gentext key="listofprocedures" text="Popis postupaka"/>
+<l:gentext key="listoftables" text="Popis tablica"/>
+<l:gentext key="ListofTables" text="Popis tablica "/>
+<l:gentext key="ListofUnknown" text="Popis nepoznanica"/>
+<l:gentext key="listofunknown" text="Popis nepoznanica"/>
+<l:gentext key="nav-home" text="Početak"/>
+<l:gentext key="nav-next" text="Naprijed"/>
+<l:gentext key="nav-next-sibling" text="Skoči unaprijed"/>
+<l:gentext key="nav-prev" text="Natrag"/>
+<l:gentext key="nav-prev-sibling" text="Skoči unatrag"/>
+<l:gentext key="nav-up" text="Gore"/>
+<l:gentext key="nav-toc" text="Sadržaj"/>
+<l:gentext key="Draft" text="Nacrt"/>
+<l:gentext key="above" text="iznad"/>
+<l:gentext key="below" text="ispod"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Oznake"/>
+<l:gentext key="lowercase.alpha" text="abcčćdđefghijklmnopqrsštuvwxyzž"/>
+<l:gentext key="uppercase.alpha" text="ABCČĆDĐEFGHIJKLMNOPQRSŠTUVWXYZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‚"/>
+<l:dingbat key="nestedendquote" text="‘"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="‐"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Jednadžba %n. %t"/>
+<l:template name="example" text="Primjer %n. %t"/>
+<l:template name="figure" text="Slika %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Dio %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postupak %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcija %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tablica %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="part" text="Dio %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="Odgovor: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Pitanje: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Pitanje: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="the section called „%t“"/>
+<l:template name="refsection" text="the section called „%t“"/>
+<l:template name="refsect1" text="the section called „%t“"/>
+<l:template name="refsect2" text="the section called „%t“"/>
+<l:template name="refsect3" text="the section called „%t“"/>
+<l:template name="sect1" text="the section called „%t“"/>
+<l:template name="sect2" text="the section called „%t“"/>
+<l:template name="sect3" text="the section called „%t“"/>
+<l:template name="sect4" text="the section called „%t“"/>
+<l:template name="sect5" text="the section called „%t“"/>
+<l:template name="section" text="the section called „%t“"/>
+<l:template name="simplesect" text="the section called „%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Odgovor: %n"/>
+<l:template name="appendix" text="Dodatak %n"/>
+<l:template name="bridgehead" text="Odjeljak %n"/>
+<l:template name="chapter" text="Poglavlje %n"/>
+<l:template name="equation" text="Jednadžba %n"/>
+<l:template name="example" text="Primjer %n"/>
+<l:template name="figure" text="Slika %n"/>
+<l:template name="part" text="Dio %n"/>
+<l:template name="procedure" text="Postupak %n"/>
+<l:template name="productionset" text="Produkcija %n"/>
+<l:template name="qandadiv" text="Pitanje i Odgovor %n"/>
+<l:template name="qandaentry" text="Pitanje: %n"/>
+<l:template name="question" text="Pitanje: %n"/>
+<l:template name="sect1" text="Odjeljak %n"/>
+<l:template name="sect2" text="Odjeljak %n"/>
+<l:template name="sect3" text="Odjeljak %n"/>
+<l:template name="sect4" text="Odjeljak %n"/>
+<l:template name="sect5" text="Odjeljak %n"/>
+<l:template name="section" text="Odjeljak %n"/>
+<l:template name="table" text="Tablica %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatak %n, %t"/>
+<l:template name="bridgehead" text="Odjeljak %n, „%t“"/>
+<l:template name="chapter" text="Poglavlje %n, %t"/>
+<l:template name="equation" text="Jednadžba %n, „%t“"/>
+<l:template name="example" text="Primjer %n, „%t“"/>
+<l:template name="figure" text="Slika %n, „%t“"/>
+<l:template name="part" text="Dio %n, „%t“"/>
+<l:template name="procedure" text="Postupak %n, „%t“"/>
+<l:template name="productionset" text="Produkcija %n, „%t“"/>
+<l:template name="qandadiv" text="Pitanje i Odgovor %n, „%t“"/>
+<l:template name="refsect1" text="the section called „%t“"/>
+<l:template name="refsect2" text="the section called „%t“"/>
+<l:template name="refsect3" text="the section called „%t“"/>
+<l:template name="refsection" text="the section called „%t“"/>
+<l:template name="sect1" text="Odjeljak %n, „%t“"/>
+<l:template name="sect2" text="Odjeljak %n, „%t“"/>
+<l:template name="sect3" text="Odjeljak %n, „%t“"/>
+<l:template name="sect4" text="Odjeljak %n, „%t“"/>
+<l:template name="sect5" text="Odjeljak %n, „%t“"/>
+<l:template name="section" text="Odjeljak %n, „%t“"/>
+<l:template name="simplesect" text="the section called „%t“"/>
+<l:template name="table" text="Tablica %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=", i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vidi %t"/>
+<l:template name="seealso" text="Vidi i %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Primatelji: "/>
+<l:template name="MsgLevel" text="Razina: "/>
+<l:template name="MsgOrig" text="Izvor: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Siječanj"/>
+<l:template name="February" text="Veljača"/>
+<l:template name="March" text="Ožujak"/>
+<l:template name="April" text="Travanj"/>
+<l:template name="May" text="Svibanj"/>
+<l:template name="June" text="Lipanj"/>
+<l:template name="July" text="Srpanj"/>
+<l:template name="August" text="Kolovoz"/>
+<l:template name="September" text="Rujan"/>
+<l:template name="October" text="Listopad"/>
+<l:template name="November" text="Studeni"/>
+<l:template name="December" text="Prosinac"/>
+<l:template name="Monday" text="Ponedjeljak"/>
+<l:template name="Tuesday" text="Utorak"/>
+<l:template name="Wednesday" text="Srijeda"/>
+<l:template name="Thursday" text="Četvrtak"/>
+<l:template name="Friday" text="Petak"/>
+<l:template name="Saturday" text="Subota"/>
+<l:template name="Sunday" text="Nedjelja"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Sij"/>
+<l:template name="Feb" text="Velj"/>
+<l:template name="Mar" text="Ožu"/>
+<l:template name="Apr" text="Tra"/>
+<l:template name="May" text="Svi"/>
+<l:template name="Jun" text="Lip"/>
+<l:template name="Jul" text="Srp"/>
+<l:template name="Aug" text="Kol"/>
+<l:template name="Sep" text="Ruj"/>
+<l:template name="Oct" text="Lis"/>
+<l:template name="Nov" text="Stu"/>
+<l:template name="Dec" text="Pro"/>
+<l:template name="Mon" text="Pon"/>
+<l:template name="Tue" text="Uto"/>
+<l:template name="Wed" text="Sri"/>
+<l:template name="Thu" text="Čet"/>
+<l:template name="Fri" text="Pet"/>
+<l:template name="Sat" text="Sub"/>
+<l:template name="Sun" text="Ned"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041a Croatian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/hu.xml b/docs/xsl-generic/common/hu.xml
new file mode 100644
index 00000000..be795c7f
--- /dev/null
+++ b/docs/xsl-generic/common/hu.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="hu" english-language-name="Hungarian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/hu.xml -->
+<!-- * -->
+<!-- * E-mail the edited hu.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Kivonat"/>
+<l:gentext key="abstract" text="kivonat"/>
+<l:gentext key="Answer" text="V:"/>
+<l:gentext key="answer" text="v:"/>
+<l:gentext key="Appendix" text="Függelék"/>
+<l:gentext key="appendix" text="függelék"/>
+<l:gentext key="Article" text="Cikk"/>
+<l:gentext key="article" text="cikk"/>
+<l:gentext key="Author" text="Szerz"/>
+<l:gentext key="Bibliography" text="Irodalomjegyzék"/>
+<l:gentext key="bibliography" text="irodalomjegyzék"/>
+<l:gentext key="Book" text="Könyv"/>
+<l:gentext key="book" text="könyv"/>
+<l:gentext key="CAUTION" text="FIGYELEM"/>
+<l:gentext key="Caution" text="Figyelem"/>
+<l:gentext key="caution" text="figyelem"/>
+<l:gentext key="Chapter" text="Fejezet"/>
+<l:gentext key="chapter" text="fejezet"/>
+<l:gentext key="Colophon" text="Végszó"/>
+<l:gentext key="colophon" text="végszó"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="copyright"/>
+<l:gentext key="Dedication" text="Ajánlás"/>
+<l:gentext key="dedication" text="ajánlás"/>
+<l:gentext key="Edition" text="Kiadás"/>
+<l:gentext key="edition" text="kiadás"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Egyenlet"/>
+<l:gentext key="equation" text="egyenlet"/>
+<l:gentext key="Example" text="Példa"/>
+<l:gentext key="example" text="példa"/>
+<l:gentext key="Figure" text="Ábra"/>
+<l:gentext key="figure" text="ábra"/>
+<l:gentext key="Glossary" text="Szójegyzék"/>
+<l:gentext key="glossary" text="szójegyzék"/>
+<l:gentext key="GlossSee" text="Lásd"/>
+<l:gentext key="glosssee" text="lásd"/>
+<l:gentext key="GlossSeeAlso" text="Lásd még"/>
+<l:gentext key="glossseealso" text="lásd még"/>
+<l:gentext key="IMPORTANT" text="FONTOS"/>
+<l:gentext key="important" text="fontos"/>
+<l:gentext key="Important" text="Fontos"/>
+<l:gentext key="Index" text="Tárgymutató"/>
+<l:gentext key="index" text="tárgymutató"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Jogi közlemény"/>
+<l:gentext key="legalnotice" text="jogi közlemény"/>
+<l:gentext key="MsgAud" text="Célközönség"/>
+<l:gentext key="msgaud" text="célközönség"/>
+<l:gentext key="MsgLevel" text="Szint"/>
+<l:gentext key="msglevel" text="szint"/>
+<l:gentext key="MsgOrig" text="Eredet"/>
+<l:gentext key="msgorig" text="eredet"/>
+<l:gentext key="NOTE" text="MEGJEGYZÉS"/>
+<l:gentext key="Note" text="Megjegyzés"/>
+<l:gentext key="note" text="megjegyzés"/>
+<l:gentext key="Part" text="Rész"/>
+<l:gentext key="part" text="rész"/>
+<l:gentext key="Preface" text="Előszó"/>
+<l:gentext key="preface" text="előszó"/>
+<l:gentext key="Procedure" text="Eljárás"/>
+<l:gentext key="procedure" text="eljárás"/>
+<l:gentext key="ProductionSet" text="Elemcsoport"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Megjelent"/>
+<l:gentext key="published" text="megjelent"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="K és V"/>
+<l:gentext key="qandadiv" text="K és V"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="K:"/>
+<l:gentext key="question" text="k:"/>
+<l:gentext key="RefEntry" text="Bejegyzés"/>
+<l:gentext key="refentry" text="bejegyzés"/>
+<l:gentext key="Reference" text="Referencia"/>
+<l:gentext key="reference" text="referencia"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Név"/>
+<l:gentext key="refname" text="név"/>
+<l:gentext key="RefSection" text="Szakasz"/>
+<l:gentext key="refsection" text="szakasz"/>
+<l:gentext key="RefSynopsisDiv" text="Áttekintés"/>
+<l:gentext key="refsynopsisdiv" text="áttekintés"/>
+<l:gentext key="RevHistory" text="Verziótörténet"/>
+<l:gentext key="revhistory" text="verziótörténet"/>
+<l:gentext key="revision" text="verzió"/>
+<l:gentext key="Revision" text="Verzió"/>
+<l:gentext key="sect1" text="Szakasz"/>
+<l:gentext key="sect2" text="Szakasz"/>
+<l:gentext key="sect3" text="Szakasz"/>
+<l:gentext key="sect4" text="Szakasz"/>
+<l:gentext key="sect5" text="Szakasz"/>
+<l:gentext key="section" text="szakasz"/>
+<l:gentext key="Section" text="Szakasz"/>
+<l:gentext key="see" text="lásd"/>
+<l:gentext key="See" text="Lásd"/>
+<l:gentext key="seealso" text="lásd még"/>
+<l:gentext key="Seealso" text="Lásd még"/>
+<l:gentext key="SeeAlso" text="Lásd még"/>
+<l:gentext key="set" text="csoport"/>
+<l:gentext key="Set" text="Csoport"/>
+<l:gentext key="setindex" text="csoportmutató"/>
+<l:gentext key="SetIndex" text="Csoportmutató"/>
+<l:gentext key="Sidebar" text="Széljegyzet"/>
+<l:gentext key="sidebar" text="széljegyzet"/>
+<l:gentext key="step" text="lépés"/>
+<l:gentext key="Step" text="Lépés"/>
+<l:gentext key="table" text="táblázat"/>
+<l:gentext key="Table" text="Táblázat"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="tipp"/>
+<l:gentext key="TIP" text="TIPP"/>
+<l:gentext key="Tip" text="Tipp"/>
+<l:gentext key="Warning" text="Figyelem"/>
+<l:gentext key="warning" text="figyelem"/>
+<l:gentext key="WARNING" text="FIGYELEM"/>
+<l:gentext key="and" text="és"/>
+<l:gentext key="by" text=""/>
+<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étező elem"/>
+<l:gentext key="notes" text="megjegyzések"/>
+<l:gentext key="Notes" text="Megjegyzések"/>
+<l:gentext key="Pgs" text="Lsz."/>
+<l:gentext key="pgs" text="lsz."/>
+<l:gentext key="Revisedby" text="Megvizsgálva"/>
+<l:gentext key="revisedby" text="megvizsgálva"/>
+<l:gentext key="TableNotes" text="Megjegyzések"/>
+<l:gentext key="tablenotes" text="megjegyzések"/>
+<l:gentext key="TableofContents" text="Tartalom"/>
+<l:gentext key="tableofcontents" text="tartalom"/>
+<l:gentext key="unexpectedelementname" text="nem várt elemnév"/>
+<l:gentext key="unsupported" text="nem támogatott"/>
+<l:gentext key="xrefto" text="keresztref"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="az egyenletek listája"/>
+<l:gentext key="ListofEquations" text="Az egyenletek listája"/>
+<l:gentext key="ListofExamples" text="A példák listája"/>
+<l:gentext key="listofexamples" text="a példák listája"/>
+<l:gentext key="ListofFigures" text="Az ábrák listája"/>
+<l:gentext key="listoffigures" text="az ábrák listája"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="a táblázatok listája"/>
+<l:gentext key="ListofTables" text="A táblázatok listája"/>
+<l:gentext key="ListofUnknown" text="Az egyéb elemek listája"/>
+<l:gentext key="listofunknown" text="az egyéb elemek listája"/>
+<l:gentext key="nav-home" text="Tartalom"/>
+<l:gentext key="nav-next" text="Következő"/>
+<l:gentext key="nav-next-sibling" text="Gyors előre"/>
+<l:gentext key="nav-prev" text="Előző"/>
+<l:gentext key="nav-prev-sibling" text="Gyors vissza"/>
+<l:gentext key="nav-up" text="Fel"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Vázlat"/>
+<l:gentext key="above" text="fent"/>
+<l:gentext key="below" text="lent"/>
+<l:gentext key="sectioncalled" text="ilyen nevű szakasz:"/>
+<l:gentext key="index symbols" text="szimbólummutató"/>
+<l:gentext key="lowercase.alpha" text="aábcdeéfghiíjklmnoóöőpqrstuúü«vwxyz"/>
+<l:gentext key="uppercase.alpha" text="AÁBCDEÉFGHIÍJKLMNOÓÖŐPQRSTUÚÜŰVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="»"/>
+<l:dingbat key="nestedendquote" text="«"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="last-first"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="%n. függelék - %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%n. fejezet - %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%n. egyenlet - %t"/>
+<l:template name="example" text="%n. példa - %t"/>
+<l:template name="figure" text="%n. ábra - %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%n. rész - %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Eljárás %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Elemcsoport %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="%n. táblázat - %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="%n. függelék - %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%n. fejezet - %t"/>
+<l:template name="part" text="%n. rész - %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="„%t”"/>
+<l:template name="refsection" text="„%t”"/>
+<l:template name="refsect1" text="„%t”"/>
+<l:template name="refsect2" text="„%t”"/>
+<l:template name="refsect3" text="„%t”"/>
+<l:template name="sect1" text="„%t”"/>
+<l:template name="sect2" text="„%t”"/>
+<l:template name="sect3" text="„%t”"/>
+<l:template name="sect4" text="„%t”"/>
+<l:template name="sect5" text="„%t”"/>
+<l:template name="section" text="„%t”"/>
+<l:template name="simplesect" text="„%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="V: %n"/>
+<l:template name="appendix" text="%n. függelék"/>
+<l:template name="bridgehead" text="Szakasz %n"/>
+<l:template name="chapter" text="%n. fejezet"/>
+<l:template name="equation" text="Egyenlet %n"/>
+<l:template name="example" text="%n. példa"/>
+<l:template name="figure" text="%n. ábra"/>
+<l:template name="part" text="%n. rész"/>
+<l:template name="procedure" text="Eljárás %n"/>
+<l:template name="productionset" text="Elemcsoport %n"/>
+<l:template name="qandadiv" text="K és V %n"/>
+<l:template name="qandaentry" text="K: %n"/>
+<l:template name="question" text="K: %n"/>
+<l:template name="sect1" text="%n. szakasz"/>
+<l:template name="sect2" text="%n. szakasz"/>
+<l:template name="sect3" text="%n. szakasz"/>
+<l:template name="sect4" text="%n. szakasz"/>
+<l:template name="sect5" text="%n. szakasz"/>
+<l:template name="section" text="%n. szakasz"/>
+<l:template name="table" text="Táblázat %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="%n. függelék - %t"/>
+<l:template name="bridgehead" text="Szakasz %n, „%t”"/>
+<l:template name="chapter" text="%n. fejezet - %t"/>
+<l:template name="equation" text="Egyenlet %n, „%t”"/>
+<l:template name="example" text="%n. példa - %t"/>
+<l:template name="figure" text="%n. ábra - %t"/>
+<l:template name="part" text="%n. rész - %t"/>
+<l:template name="procedure" text="Eljárás %n, „%t”"/>
+<l:template name="productionset" text="Elemcsoport %n, „%t”"/>
+<l:template name="qandadiv" text="K és V %n, „%t”"/>
+<l:template name="refsect1" text="„%t”"/>
+<l:template name="refsect2" text="„%t”"/>
+<l:template name="refsect3" text="„%t”"/>
+<l:template name="refsection" text="„%t”"/>
+<l:template name="sect1" text="%n. szakasz - %t"/>
+<l:template name="sect2" text="%n. szakasz - %t"/>
+<l:template name="sect3" text="%n. szakasz - %t"/>
+<l:template name="sect4" text="%n. szakasz - %t"/>
+<l:template name="sect5" text="%n. szakasz - %t"/>
+<l:template name="section" text="%n. szakasz - %t"/>
+<l:template name="simplesect" text="„%t”"/>
+<l:template name="table" text="%n. táblázat - %t"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" és "/>
+<l:template name="seplast" text=", és "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Lásd %t"/>
+<l:template name="seealso" text="Lásd még %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Célközönség: "/>
+<l:template name="MsgLevel" text="Szint: "/>
+<l:template name="MsgOrig" text="Eredet: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x040e Hungarian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/id.xml b/docs/xsl-generic/common/id.xml
new file mode 100644
index 00000000..7ad10d0a
--- /dev/null
+++ b/docs/xsl-generic/common/id.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="id" english-language-name="Indonesian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/id.xml -->
+<!-- * -->
+<!-- * E-mail the edited id.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrak"/>
+<l:gentext key="abstract" text="Abstrak"/>
+<l:gentext key="Answer" text="Jawab:"/>
+<l:gentext key="answer" text="Jawab:"/>
+<l:gentext key="Appendix" text="Lampiran"/>
+<l:gentext key="appendix" text="lampiran"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="Artikel"/>
+<l:gentext key="Author" text="Pembuat"/>
+<l:gentext key="Bibliography" text="Bibliografi"/>
+<l:gentext key="bibliography" text="Bibliografi"/>
+<l:gentext key="Book" text="Buku"/>
+<l:gentext key="book" text="Buku"/>
+<l:gentext key="CAUTION" text="PERHATIAN"/>
+<l:gentext key="Caution" text="Perhatian"/>
+<l:gentext key="caution" text="Perhatian"/>
+<l:gentext key="Chapter" text="Bab"/>
+<l:gentext key="chapter" text="bab"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="Kolofon"/>
+<l:gentext key="Copyright" text="Hak Cipta"/>
+<l:gentext key="copyright" text="Hak Cipta"/>
+<l:gentext key="Dedication" text="Dedikasi"/>
+<l:gentext key="dedication" text="Dedikasi"/>
+<l:gentext key="Edition" text="Edisi"/>
+<l:gentext key="edition" text="Edisi"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<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="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Diterbitkan"/>
+<l:gentext key="published" text="Diterbitkan"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Tanya dan Jawab"/>
+<l:gentext key="qandadiv" text="Tanya dan Jawab"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<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="References" text="References" lang="en"/>
+<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="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="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="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="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="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<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="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Lampiran %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="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="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Bagian %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prosedur %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Lampiran %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Bab %n. %t"/>
+<l:template name="part" text="Bagian %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Tanya: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Tanya: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Jawab: %n"/>
+<l:template name="appendix" text="Lampiran %n"/>
+<l:template name="bridgehead" text="Bagian %n"/>
+<l:template name="chapter" text="Bab %n"/>
+<l:template name="equation" text="Persamaan %n"/>
+<l:template name="example" text="Teladan %n"/>
+<l:template name="figure" text="Gambar %n"/>
+<l:template name="part" text="Bagian %n"/>
+<l:template name="procedure" text="Prosedur %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Tanya dan Jawab %n"/>
+<l:template name="qandaentry" text="Tanya: %n"/>
+<l:template name="question" text="Tanya: %n"/>
+<l:template name="sect1" text="Bagian %n"/>
+<l:template name="sect2" text="Bagian %n"/>
+<l:template name="sect3" text="Bagian %n"/>
+<l:template name="sect4" text="Bagian %n"/>
+<l:template name="sect5" text="Bagian %n"/>
+<l:template name="section" text="Bagian %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Lampiran %n, %t"/>
+<l:template name="bridgehead" text="Bagian %n, “%t”"/>
+<l:template name="chapter" text="Bab %n, %t"/>
+<l:template name="equation" text="Persamaan %n, “%t”"/>
+<l:template name="example" text="Teladan %n, “%t”"/>
+<l:template name="figure" text="Gambar %n, “%t”"/>
+<l:template name="part" text="Bagian %n, “%t”"/>
+<l:template name="procedure" text="Prosedur %n, “%t”"/>
+<l:template name="productionset" text="Production %n, “%t”"/>
+<l:template name="qandadiv" text="Tanya dan Jawab %n, “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="sect1" text="Bagian %n, “%t”"/>
+<l:template name="sect2" text="Bagian %n, “%t”"/>
+<l:template name="sect3" text="Bagian %n, “%t”"/>
+<l:template name="sect4" text="Bagian %n, “%t”"/>
+<l:template name="sect5" text="Bagian %n, “%t”"/>
+<l:template name="section" text="Bagian %n, “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+<l:template name="table" text="Tabel %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" dan "/>
+<l:template name="seplast" text=", dan "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Lihat %t"/>
+<l:template name="seealso" text="Lihat Juga %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Pemirsa: "/>
+<l:template name="MsgLevel" text="Tingkatan: "/>
+<l:template name="MsgOrig" text="Asal: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0421 Indonesian (INDONESIA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/insertfile.xsl b/docs/xsl-generic/common/insertfile.xsl
new file mode 100644
index 00000000..66bcf410
--- /dev/null
+++ b/docs/xsl-generic/common/insertfile.xsl
@@ -0,0 +1,111 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: insertfile.xsl 5262 2005-10-12 14:58:42Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="textdata.default.encoding"></xsl:param>
+
+<!-- * This stylesheet makes a copy of a source tree, replacing all -->
+<!-- * instances of the following with corresponding Xinclude instances -->
+<!-- * in the result tree. -->
+<!-- * -->
+<!-- * <textobject><textdata fileref="foo.txt"> -->
+<!-- * <imagedata format="linespecific" fileref="foo.txt"> -->
+<!-- * <inlinegraphic format="linespecific" fileref="foo.txt"> -->
+<!-- * -->
+<!-- * Those become: -->
+<!-- * -->
+<!-- * <xi:include href="foo.txt" parse="text"/> -->
+<!-- * -->
+<!-- * It also works as expected with entityref in place of fileref, -->
+<!-- * and copies over the value of the <textdata>“encoding” atrribute (if -->
+<!-- * found). It is basically intended as an alternative to using the -->
+<!-- * DocBook XSLT Java insertfile() extension. -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="get.external.filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="textobject[child::textdata[@entityref|@fileref]]">
+ <xsl:apply-templates select="textdata"/>
+</xsl:template>
+
+<xsl:template match="textdata[@entityref|@fileref]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="get.external.filename"/>
+ </xsl:variable>
+ <xsl:variable name="encoding">
+ <xsl:choose>
+ <xsl:when test="@encoding">
+ <xsl:value-of select="@encoding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$textdata.default.encoding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xi:include href="{$filename}" parse="text" encoding="{$encoding}"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template
+ match="inlinemediaobject
+ [child::imageobject
+ [child::imagedata
+ [@format = 'linespecific' and
+ (@entityref|@fileref)]]]">
+ <xsl:apply-templates select="imageobject/imagedata"/>
+</xsl:template>
+
+<xsl:template match="imagedata
+ [@format = 'linespecific' and
+ (@entityref|@fileref)]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="get.external.filename"/>
+ </xsl:variable>
+ <xi:include href="{$filename}" parse="text" encoding="{$textdata.default.encoding}"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="inlinegraphic
+ [@format = 'linespecific' and
+ (@entityref|@fileref)]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="get.external.filename"/>
+ </xsl:variable>
+ <xi:include href="{$filename}" parse="text" encoding="{$textdata.default.encoding}"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * copy everything else into result tree as-is -->
+<xsl:template match="node() | @*">
+ <xsl:copy>
+ <xsl:apply-templates select="@* | node()"/>
+ </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/it.xml b/docs/xsl-generic/common/it.xml
new file mode 100644
index 00000000..fc473dfe
--- /dev/null
+++ b/docs/xsl-generic/common/it.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="it" english-language-name="Italian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/it.xml -->
+<!-- * -->
+<!-- * E-mail the edited it.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="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="Author" text="Autori"/>
+<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="Editor" text="Editor" lang="en"/>
+<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="PubDate" text="Data di pubblicazione"/>
+<l:gentext key="pubdate" text="Data di pubblicazione"/>
+<l:gentext key="Published" text="Pubblicato"/>
+<l:gentext key="published" text="Pubblicato"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="D e R"/>
+<l:gentext key="qandadiv" text="D e R"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<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="References" text="Riferimenti"/>
+<l:gentext key="RefName" text="Nome"/>
+<l:gentext key="refname" text="Nome"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Sinossi"/>
+<l:gentext key="refsynopsisdiv" text="Sinossi"/>
+<l:gentext key="RevHistory" text="Diario delle Revisioni"/>
+<l:gentext key="revhistory" text="Diario delle Revisioni"/>
+<l:gentext key="revision" text="Revisione"/>
+<l:gentext key="Revision" text="Revisione"/>
+<l:gentext key="sect1" text="Sezione"/>
+<l:gentext key="sect2" text="Sezione"/>
+<l:gentext key="sect3" text="Sezione"/>
+<l:gentext key="sect4" text="Sezione"/>
+<l:gentext key="sect5" text="Sezione"/>
+<l:gentext key="section" text="Sezione"/>
+<l:gentext key="Section" text="Sezione"/>
+<l:gentext key="see" text="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="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<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="Authors" text="Autori"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Designer Grafico"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Traduttore"/>
+<l:gentext key="listofequations" text="Lista delle Equazioni"/>
+<l:gentext key="ListofEquations" text="Lista delle Equazioni"/>
+<l:gentext key="ListofExamples" text="Lista degli Esempi"/>
+<l:gentext key="listofexamples" text="Lista degli Esempi"/>
+<l:gentext key="ListofFigures" text="Lista delle Figure"/>
+<l:gentext key="listoffigures" text="Lista delle Figure"/>
+<l:gentext key="ListofProcedures" text="Lista delle procedure"/>
+<l:gentext key="listofprocedures" text="Lista delle procedure"/>
+<l:gentext key="listoftables" text="Lista delle Tabelle"/>
+<l:gentext key="ListofTables" text="Lista delle Tabelle"/>
+<l:gentext key="ListofUnknown" text="Lista degli Sconosciuti"/>
+<l:gentext key="listofunknown" text="Lista degli Sconosciuti"/>
+<l:gentext key="nav-home" text="Partenza"/>
+<l:gentext key="nav-next" text="Avanti"/>
+<l:gentext key="nav-next-sibling" text="Salta Avanti"/>
+<l:gentext key="nav-prev" text="Indietro"/>
+<l:gentext key="nav-prev-sibling" text="Salta Indietro"/>
+<l:gentext key="nav-up" text="Risali"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<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:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="«"/>
+<l:dingbat key="endquote" text="»"/>
+<l:dingbat key="nestedstartquote" text="“"/>
+<l:dingbat key="nestedendquote" text="”"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Appendice %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capitolo %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equazione %n. %t"/>
+<l:template name="example" text="Esempio %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedura %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produzione %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabella %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Appendice %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Capitolo %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="D: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="D: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="la sezione chiamata «%t»"/>
+<l:template name="refsection" text="la sezione chiamata «%t»"/>
+<l:template name="refsect1" text="la sezione chiamata «%t»"/>
+<l:template name="refsect2" text="la sezione chiamata «%t»"/>
+<l:template name="refsect3" text="la sezione chiamata «%t»"/>
+<l:template name="sect1" text="la sezione chiamata «%t»"/>
+<l:template name="sect2" text="la sezione chiamata «%t»"/>
+<l:template name="sect3" text="la sezione chiamata «%t»"/>
+<l:template name="sect4" text="la sezione chiamata «%t»"/>
+<l:template name="sect5" text="la sezione chiamata «%t»"/>
+<l:template name="section" text="la sezione chiamata «%t»"/>
+<l:template name="simplesect" text="la sezione chiamata «%t»"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Appendice %n"/>
+<l:template name="bridgehead" text="Sezione %n"/>
+<l:template name="chapter" text="Capitolo %n"/>
+<l:template name="equation" text="Equazione %n"/>
+<l:template name="example" text="Esempio %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedura %n"/>
+<l:template name="productionset" text="Produzione %n"/>
+<l:template name="qandadiv" text="D e R %n"/>
+<l:template name="qandaentry" text="D: %n"/>
+<l:template name="question" text="D: %n"/>
+<l:template name="sect1" text="Sezione %n"/>
+<l:template name="sect2" text="Sezione %n"/>
+<l:template name="sect3" text="Sezione %n"/>
+<l:template name="sect4" text="Sezione %n"/>
+<l:template name="sect5" text="Sezione %n"/>
+<l:template name="section" text="Sezione %n"/>
+<l:template name="table" text="Tabella %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Appendice %n, %t"/>
+<l:template name="bridgehead" text="Sezione %n, «%t»"/>
+<l:template name="chapter" text="Capitolo %n, %t"/>
+<l:template name="equation" text="Equazione %n, «%t»"/>
+<l:template name="example" text="Esempio %n, «%t»"/>
+<l:template name="figure" text="Figura %n, «%t»"/>
+<l:template name="part" text="Parte %n, «%t»"/>
+<l:template name="procedure" text="Procedura %n, «%t»"/>
+<l:template name="productionset" text="Produzione %n, «%t»"/>
+<l:template name="qandadiv" text="D e R %n, «%t»"/>
+<l:template name="refsect1" text="la sezione chiamata «%t»"/>
+<l:template name="refsect2" text="la sezione chiamata «%t»"/>
+<l:template name="refsect3" text="la sezione chiamata «%t»"/>
+<l:template name="refsection" text="la sezione chiamata «%t»"/>
+<l:template name="sect1" text="Sezione %n, «%t»"/>
+<l:template name="sect2" text="Sezione %n, «%t»"/>
+<l:template name="sect3" text="Sezione %n, «%t»"/>
+<l:template name="sect4" text="Sezione %n, «%t»"/>
+<l:template name="sect5" text="Sezione %n, «%t»"/>
+<l:template name="section" text="Sezione %n, «%t»"/>
+<l:template name="simplesect" text="la sezione chiamata «%t»"/>
+<l:template name="table" text="Tabella %n, «%t»"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" e "/>
+<l:template name="seplast" text=", e "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vedi %t"/>
+<l:template name="seealso" text="Vedi Anche %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Pubblico: "/>
+<l:template name="MsgLevel" text="Livello: "/>
+<l:template name="MsgOrig" text="Origine: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="gennaio"/>
+<l:template name="February" text="febbraio"/>
+<l:template name="March" text="marzo"/>
+<l:template name="April" text="aprile"/>
+<l:template name="May" text="maggio"/>
+<l:template name="June" text="giugno"/>
+<l:template name="July" text="luglio"/>
+<l:template name="August" text="agosto"/>
+<l:template name="September" text="settembre"/>
+<l:template name="October" text="ottobre"/>
+<l:template name="November" text="novembre"/>
+<l:template name="December" text="dicembre"/>
+<l:template name="Monday" text="lunedì"/>
+<l:template name="Tuesday" text="martedì"/>
+<l:template name="Wednesday" text="mercoledì"/>
+<l:template name="Thursday" text="giovedì"/>
+<l:template name="Friday" text="venerdì"/>
+<l:template name="Saturday" text="sabato"/>
+<l:template name="Sunday" text="domenica"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="gen"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="apr"/>
+<l:template name="May" text="mag"/>
+<l:template name="Jun" text="giu"/>
+<l:template name="Jul" text="lug"/>
+<l:template name="Aug" text="ago"/>
+<l:template name="Sep" text="set"/>
+<l:template name="Oct" text="ott"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dic"/>
+<l:template name="Mon" text="lun"/>
+<l:template name="Tue" text="mar"/>
+<l:template name="Wed" text="mer"/>
+<l:template name="Thu" text="gio"/>
+<l:template name="Fri" text="ven"/>
+<l:template name="Sat" text="sab"/>
+<l:template name="Sun" text="dom"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0410 Italian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/ja.xml b/docs/xsl-generic/common/ja.xml
new file mode 100644
index 00000000..aedc1b12
--- /dev/null
+++ b/docs/xsl-generic/common/ja.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ja" english-language-name="Japanese">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ja.xml -->
+<!-- * -->
+<!-- * E-mail the edited ja.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="概要"/>
+<l:gentext key="abstract" text="概要"/>
+<l:gentext key="Answer" text="答:"/>
+<l:gentext key="answer" text="答:"/>
+<l:gentext key="Appendix" text="付録"/>
+<l:gentext key="appendix" text="付録"/>
+<l:gentext key="Article" text="項目"/>
+<l:gentext key="article" text="項目"/>
+<l:gentext key="Author" text="著者"/>
+<l:gentext key="Bibliography" text="参考文献"/>
+<l:gentext key="bibliography" text="参考文献"/>
+<l:gentext key="Book" text="ブック"/>
+<l:gentext key="book" text="ブック"/>
+<l:gentext key="CAUTION" text="注意"/>
+<l:gentext key="Caution" text="注意"/>
+<l:gentext key="caution" text="注意"/>
+<l:gentext key="Chapter" text="章"/>
+<l:gentext key="chapter" text="章"/>
+<l:gentext key="Colophon" text="奥付"/>
+<l:gentext key="colophon" text="奥付"/>
+<l:gentext key="Copyright" text="製作著作"/>
+<l:gentext key="copyright" text="製作著作"/>
+<l:gentext key="Dedication" text="謝辞"/>
+<l:gentext key="dedication" text="謝辞"/>
+<l:gentext key="Edition" text="編集"/>
+<l:gentext key="edition" text="編集"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="式"/>
+<l:gentext key="equation" text="式"/>
+<l:gentext key="Example" text="例"/>
+<l:gentext key="example" text="例"/>
+<l:gentext key="Figure" text="図"/>
+<l:gentext key="figure" text="図"/>
+<l:gentext key="Glossary" text="用語集"/>
+<l:gentext key="glossary" text="用語集"/>
+<l:gentext key="GlossSee" text="参照"/>
+<l:gentext key="glosssee" text="参照"/>
+<l:gentext key="GlossSeeAlso" text="参照"/>
+<l:gentext key="glossseealso" text="参照"/>
+<l:gentext key="IMPORTANT" text="重要項目"/>
+<l:gentext key="important" text="重要項目"/>
+<l:gentext key="Important" text="重要項目"/>
+<l:gentext key="Index" text="目次"/>
+<l:gentext key="index" text="目次"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text=""/>
+<l:gentext key="legalnotice" text=""/>
+<l:gentext key="MsgAud" text="対象者"/>
+<l:gentext key="msgaud" text="対象者"/>
+<l:gentext key="MsgLevel" text="レベル"/>
+<l:gentext key="msglevel" text="レベル"/>
+<l:gentext key="MsgOrig" text="発信元"/>
+<l:gentext key="msgorig" text="発信元"/>
+<l:gentext key="NOTE" text="注意"/>
+<l:gentext key="Note" text="注意"/>
+<l:gentext key="note" text="注意"/>
+<l:gentext key="Part" text="パート"/>
+<l:gentext key="part" text="パート"/>
+<l:gentext key="Preface" text="序文"/>
+<l:gentext key="preface" text="序文"/>
+<l:gentext key="Procedure" text="手順"/>
+<l:gentext key="procedure" text="手順"/>
+<l:gentext key="ProductionSet" text="プロダクション"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="発行"/>
+<l:gentext key="published" text="発行"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="問:、答:"/>
+<l:gentext key="qandadiv" text="問:、答:"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="問:"/>
+<l:gentext key="question" text="問:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="参照"/>
+<l:gentext key="reference" text="参照"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="名前"/>
+<l:gentext key="refname" text="名前"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="概要"/>
+<l:gentext key="refsynopsisdiv" text="概要"/>
+<l:gentext key="RevHistory" text="改訂履歴"/>
+<l:gentext key="revhistory" text="改訂履歴"/>
+<l:gentext key="revision" text="改訂"/>
+<l:gentext key="Revision" text="改訂"/>
+<l:gentext key="sect1" text="項"/>
+<l:gentext key="sect2" text="項"/>
+<l:gentext key="sect3" text="項"/>
+<l:gentext key="sect4" text="項"/>
+<l:gentext key="sect5" text="項"/>
+<l:gentext key="section" text="項"/>
+<l:gentext key="Section" text="項"/>
+<l:gentext key="see" text="参照"/>
+<l:gentext key="See" text="参照"/>
+<l:gentext key="seealso" text="参照"/>
+<l:gentext key="Seealso" text="参照"/>
+<l:gentext key="SeeAlso" text="参照"/>
+<l:gentext key="set" text="設定"/>
+<l:gentext key="Set" text="設定"/>
+<l:gentext key="setindex" text="目次設定"/>
+<l:gentext key="SetIndex" text="目次設定"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="サイドバー"/>
+<l:gentext key="step" text="ステップ"/>
+<l:gentext key="Step" text="ステップ"/>
+<l:gentext key="table" text="表"/>
+<l:gentext key="Table" text="表"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="ティップ"/>
+<l:gentext key="TIP" text="ティップ"/>
+<l:gentext key="Tip" text="ティップ"/>
+<l:gentext key="Warning" text="警告"/>
+<l:gentext key="warning" text="警告"/>
+<l:gentext key="WARNING" text="警告"/>
+<l:gentext key="and" text="、"/>
+<l:gentext key="by" text=":"/>
+<l:gentext key="Edited" text="編者"/>
+<l:gentext key="edited" text="編者"/>
+<l:gentext key="Editedby" text="編者:"/>
+<l:gentext key="editedby" text="編者:"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="要素が存在しません"/>
+<l:gentext key="notes" text="注意"/>
+<l:gentext key="Notes" text="注意"/>
+<l:gentext key="Pgs" text="偧献"/>
+<l:gentext key="pgs" text="偧献"/>
+<l:gentext key="Revisedby" text="Revised by: "/>
+<l:gentext key="revisedby" text="Revised by: "/>
+<l:gentext key="TableNotes" text="注意"/>
+<l:gentext key="tablenotes" text="注意"/>
+<l:gentext key="TableofContents" text="目次"/>
+<l:gentext key="tableofcontents" text="目次"/>
+<l:gentext key="unexpectedelementname" text="不明な要素名"/>
+<l:gentext key="unsupported" text="サポートしません"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="式目次"/>
+<l:gentext key="ListofEquations" text="式目次"/>
+<l:gentext key="ListofExamples" text="例目次"/>
+<l:gentext key="listofexamples" text="例目次"/>
+<l:gentext key="ListofFigures" text="図目次"/>
+<l:gentext key="listoffigures" text="図目次"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="表目次"/>
+<l:gentext key="ListofTables" text="表目次"/>
+<l:gentext key="ListofUnknown" text="不明目次"/>
+<l:gentext key="listofunknown" text="不明目次"/>
+<l:gentext key="nav-home" text="ホーム"/>
+<l:gentext key="nav-next" text="次のページ"/>
+<l:gentext key="nav-next-sibling" text="早送り"/>
+<l:gentext key="nav-prev" text="前のページ"/>
+<l:gentext key="nav-prev-sibling" text="巻戻し"/>
+<l:gentext key="nav-up" text="上に戻る"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="シンボル"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="「"/>
+<l:dingbat key="endquote" text="」"/>
+<l:dingbat key="nestedstartquote" text="『"/>
+<l:dingbat key="nestedendquote" text="』"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="●"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="family-given"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="付録 %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="第%n章 %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="式 %n. %t"/>
+<l:template name="example" text="例 %n. %t"/>
+<l:template name="figure" text="図 %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="パート %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="手順 %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="プロダクション %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="表 %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="付録 %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="第%n章 %t"/>
+<l:template name="part" text="パート %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="問: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="問: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="%t項"/>
+<l:template name="refsection" text="%t項"/>
+<l:template name="refsect1" text="%t項"/>
+<l:template name="refsect2" text="%t項"/>
+<l:template name="refsect3" text="%t項"/>
+<l:template name="sect1" text="%t項"/>
+<l:template name="sect2" text="%t項"/>
+<l:template name="sect3" text="%t項"/>
+<l:template name="sect4" text="%t項"/>
+<l:template name="sect5" text="%t項"/>
+<l:template name="section" text="%t項"/>
+<l:template name="simplesect" text="%t項"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="付録%n"/>
+<l:template name="bridgehead" text="項 %n"/>
+<l:template name="chapter" text="第%n章"/>
+<l:template name="equation" text="式 %n"/>
+<l:template name="example" text="例 %n"/>
+<l:template name="figure" text="図 %n"/>
+<l:template name="part" text="パート %n"/>
+<l:template name="procedure" text="手順 %n"/>
+<l:template name="productionset" text="プロダクション %n"/>
+<l:template name="qandadiv" text="問:、答: %n"/>
+<l:template name="qandaentry" text="問: %n"/>
+<l:template name="question" text="問: %n"/>
+<l:template name="sect1" text="項%n"/>
+<l:template name="sect2" text="項%n"/>
+<l:template name="sect3" text="項%n"/>
+<l:template name="sect4" text="項%n"/>
+<l:template name="sect5" text="項%n"/>
+<l:template name="section" text="項%n"/>
+<l:template name="table" text="表 %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="付録 %n. %t"/>
+<l:template name="bridgehead" text="項 %n. 「%t」"/>
+<l:template name="chapter" text="第%n章"/>
+<l:template name="equation" text="式 %n. 「%t」"/>
+<l:template name="example" text="例 %n. 「%t」"/>
+<l:template name="figure" text="図 %n. 「%t」"/>
+<l:template name="part" text="パート %n. 「%t」"/>
+<l:template name="procedure" text="手順 %n. 「%t」"/>
+<l:template name="productionset" text="プロダクション %n. 「%t」"/>
+<l:template name="qandadiv" text="問:、答: %n. 「%t」"/>
+<l:template name="refsect1" text="「%t」"/>
+<l:template name="refsect2" text="「%t」"/>
+<l:template name="refsect3" text="「%t」"/>
+<l:template name="refsection" text="「%t」"/>
+<l:template name="sect1" text="項%n. 「%t」"/>
+<l:template name="sect2" text="項%n. 「%t」"/>
+<l:template name="sect3" text="項%n. 「%t」"/>
+<l:template name="sect4" text="項%n. 「%t」"/>
+<l:template name="sect5" text="項%n. 「%t」"/>
+<l:template name="section" text="項%n. 「%t」"/>
+<l:template name="simplesect" text="「%t」"/>
+<l:template name="table" text="表 %n. 「%t」"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" 、 "/>
+<l:template name="seplast" text=", 、 "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="参照 %t"/>
+<l:template name="seealso" text="参照 %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="対象者: "/>
+<l:template name="MsgLevel" text="レベル: "/>
+<l:template name="MsgOrig" text="発信元: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0411 Japanese"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/kn.xml b/docs/xsl-generic/common/kn.xml
new file mode 100644
index 00000000..7128add7
--- /dev/null
+++ b/docs/xsl-generic/common/kn.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="kn" english-language-name="Kannada">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/kn.xml -->
+<!-- * -->
+<!-- * E-mail the edited kn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ಸಾರಾಂಶ"/>
+<l:gentext key="abstract" text="ಸಾರಾಂಶ"/>
+<l:gentext key="Answer" text="ಉ:"/>
+<l:gentext key="answer" text="ಉ:"/>
+<l:gentext key="Appendix" text="ಅನುಬಂಧ"/>
+<l:gentext key="appendix" text="ಅನುಬಂಧ"/>
+<l:gentext key="Article" text="ಲೇಖನ"/>
+<l:gentext key="article" text="ಲೇಖನ"/>
+<l:gentext key="Author" text="ಲೇಖಕ"/>
+<l:gentext key="Bibliography" text="Bibliography"/>
+<l:gentext key="bibliography" text="Bibliography"/>
+<l:gentext key="Book" text="ಪುಸ್ತಕ"/>
+<l:gentext key="book" text="ಪುಸ್ತಕ"/>
+<l:gentext key="CAUTION" text="ಎಚ್ಚರಿಕೆ"/>
+<l:gentext key="Caution" text="ಎಚ್ಚರಿಕೆ"/>
+<l:gentext key="caution" text="ಎಚ್ಚರಿಕೆ"/>
+<l:gentext key="Chapter" text="ಅಧ್ಯಾಯ"/>
+<l:gentext key="chapter" text="ಅಧ್ಯಾಯ"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="ಕೃತಿಸ್ವಾಮ್ಯ"/>
+<l:gentext key="copyright" text="ಕೃತಿಸ್ವಾಮ್ಯ"/>
+<l:gentext key="Dedication" text="ಸಮರ್ಪಣೆ"/>
+<l:gentext key="dedication" text="ಸಮರ್ಪಣೆ"/>
+<l:gentext key="Edition" text="ಆವೃತ್ತಿ"/>
+<l:gentext key="edition" text="ಆವೃತ್ತಿ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="ಸಮೀಕರಣ"/>
+<l:gentext key="equation" text="ಸಮೀಕರಣ"/>
+<l:gentext key="Example" text="ಉದಾಹರಣೆ"/>
+<l:gentext key="example" text="ಉದಾಹರಣೆ"/>
+<l:gentext key="Figure" text="ಚಿತ್ರ"/>
+<l:gentext key="figure" text="ಚಿತ್ರ"/>
+<l:gentext key="Glossary" text="ಪಾರಿಭಾಷಿಕಕೋಶ"/>
+<l:gentext key="glossary" text="ಪಾರಿಭಾಷಿಕಕೋಶ"/>
+<l:gentext key="GlossSee" text="ಇದನ್ನು ನೋಡಿ"/>
+<l:gentext key="glosssee" text="ಇದನ್ನು ನೋಡಿ"/>
+<l:gentext key="GlossSeeAlso" text="ಇದನ್ನೂ ಸಹ ನೋಡಿ"/>
+<l:gentext key="glossseealso" text="ಇದನ್ನೂ ಸಹ ನೋಡಿ"/>
+<l:gentext key="IMPORTANT" text="ಮಹತ್ವ"/>
+<l:gentext key="important" text="ಮಹತ್ವ"/>
+<l:gentext key="Important" text="ಮಹತ್ವ"/>
+<l:gentext key="Index" text="ಅನುಕ್ರಮಣಿಕೆ"/>
+<l:gentext key="index" text="ಅನುಕ್ರಮಣಿಕೆ"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Legal Notice"/>
+<l:gentext key="legalnotice" text="Legal Notice"/>
+<l:gentext key="MsgAud" text="ಶ್ರೋತೃಗಳು"/>
+<l:gentext key="msgaud" text="ಶ್ರೋತೃಗಳು"/>
+<l:gentext key="MsgLevel" text="ಸ್ತರ"/>
+<l:gentext key="msglevel" text="ಸ್ತರ"/>
+<l:gentext key="MsgOrig" text="ಮೂಲ"/>
+<l:gentext key="msgorig" text="ಮೂಲ"/>
+<l:gentext key="NOTE" text="ಸೂಚನೆ"/>
+<l:gentext key="Note" text="ಸೂಚನೆ"/>
+<l:gentext key="note" text="ಸೂಚನೆ"/>
+<l:gentext key="Part" text="ಭಾಗ"/>
+<l:gentext key="part" text="ಭಾಗ"/>
+<l:gentext key="Preface" text="ಪೀಠಿಕೆ"/>
+<l:gentext key="preface" text="ಪೀಠಿಕೆ"/>
+<l:gentext key="Procedure" text="ಕಾರ್ಯವಿಧಾನ"/>
+<l:gentext key="procedure" text="ಕಾರ್ಯವಿಧಾನ"/>
+<l:gentext key="ProductionSet" text="ನಿರ್ಮಾಣ"/>
+<l:gentext key="PubDate" text="ಪ್ರಕಟನೆ ದಿನಾಂಕ"/>
+<l:gentext key="pubdate" text="ಪ್ರಕಟನೆ ದಿನಾಂಕ"/>
+<l:gentext key="Published" text="ಪ್ರಕಾಶಪಡಿಸಿದ"/>
+<l:gentext key="published" text="ಪ್ರಕಾಶಪಡಿಸಿದ"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="ಪ್ರ &amp; ಉ"/>
+<l:gentext key="qandadiv" text="ಪ್ರ &amp; ಉ"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ಪ್ರ:"/>
+<l:gentext key="question" text="ಪ್ರ:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="ಉಲ್ಲೇಖ"/>
+<l:gentext key="reference" text="ಉಲ್ಲೇಖ"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="ಹೆಸರು"/>
+<l:gentext key="refname" text="ಹೆಸರು"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="ಸಾರಾಂಶ"/>
+<l:gentext key="refsynopsisdiv" text="ಸಾರಾಂಶ"/>
+<l:gentext key="RevHistory" text="ಪುರಾವೃತ್ತ ಪರಿಷ್ಕರಣೆ"/>
+<l:gentext key="revhistory" text="ಪುರಾವೃತ್ತ ಪರಿಷ್ಕರಣೆ"/>
+<l:gentext key="revision" text="ಪರಿಷ್ಕರಣೆ"/>
+<l:gentext key="Revision" text="ಪರಿಷ್ಕರಣೆ"/>
+<l:gentext key="sect1" text="ವಿಭಾಗ"/>
+<l:gentext key="sect2" text="ವಿಭಾಗ"/>
+<l:gentext key="sect3" text="ವಿಭಾಗ"/>
+<l:gentext key="sect4" text="ವಿಭಾಗ"/>
+<l:gentext key="sect5" text="ವಿಭಾಗ"/>
+<l:gentext key="section" text="ವಿಭಾಗ"/>
+<l:gentext key="Section" text="ವಿಭಾಗ"/>
+<l:gentext key="see" text="ಇದನ್ನು ನೋಡಿ"/>
+<l:gentext key="See" text="ಇದನ್ನು ನೋಡಿ"/>
+<l:gentext key="seealso" text="ಇದನ್ನೂ ಸಹ ನೋಡಿ"/>
+<l:gentext key="Seealso" text="ಇದನ್ನೂ ಸಹ ನೋಡಿ"/>
+<l:gentext key="SeeAlso" text="ಇದನ್ನೂ ಸಹ ನೋಡಿ"/>
+<l:gentext key="set" text="ಹೊಂದಿಸು"/>
+<l:gentext key="Set" text="ಹೊಂದಿಸು"/>
+<l:gentext key="setindex" text="ಅನುಕ್ರಮಣಿಕೆ ಹೊಂದಿಸು"/>
+<l:gentext key="SetIndex" text="ಅನುಕ್ರಮಣಿಕೆ ಹೊಂದಿಸು"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="ಹಂತ"/>
+<l:gentext key="Step" text="ಹಂತ"/>
+<l:gentext key="table" text="ಕೋಷ್ಟಕ"/>
+<l:gentext key="Table" text="ಕೋಷ್ಟಕ"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="ಕಿವಿಮಾತು"/>
+<l:gentext key="TIP" text="ಕಿವಿಮಾತು"/>
+<l:gentext key="Tip" text="ಕಿವಿಮಾತು"/>
+<l:gentext key="Warning" text="ಎಚ್ಚರಿಕೆ"/>
+<l:gentext key="warning" text="ಎಚ್ಚರಿಕೆ"/>
+<l:gentext key="WARNING" text="ಎಚ್ಚರಿಕೆ"/>
+<l:gentext key="and" text="ಮತ್ತು"/>
+<l:gentext key="by" text="ಯಿಂದ"/>
+<l:gentext key="Edited" text="ಸಂಪಾದಿಸಿದ"/>
+<l:gentext key="edited" text="ಸಂಪಾದಿಸಿದ"/>
+<l:gentext key="Editedby" text="ಸಂಪಾದಕ"/>
+<l:gentext key="editedby" text="ಸಂಪಾದಕ"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="non-existant element"/>
+<l:gentext key="notes" text="ಟಿಪ್ಪಣಿ"/>
+<l:gentext key="Notes" text="ಟಿಪ್ಪಣಿ"/>
+<l:gentext key="Pgs" text="ಪುಟಗಳು."/>
+<l:gentext key="pgs" text="ಪುಟಗಳು."/>
+<l:gentext key="Revisedby" text="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="ವಿಷಯಾನುಕ್ರಮಣಿಕೆ"/>
+<l:gentext key="tableofcontents" text="ವಿಷಯಾನುಕ್ರಮಣಿಕೆ"/>
+<l:gentext key="unexpectedelementname" text="ಅನಿರೀಕ್ಷಿತ ವಸ್ತುವಿನ ಹೆಸರು"/>
+<l:gentext key="unsupported" text="unsupported"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="ಸಮೀಕರಣಪಟ್ಟಿ "/>
+<l:gentext key="ListofEquations" text="ಸಮೀಕರಣಪಟ್ಟಿ "/>
+<l:gentext key="ListofExamples" text="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="ಮನೆ"/>
+<l:gentext key="nav-next" text="ಮುಂದಿನ"/>
+<l:gentext key="nav-next-sibling" text="Fast Forward"/>
+<l:gentext key="nav-prev" text="ಹಿಂದಿನ"/>
+<l:gentext key="nav-prev-sibling" text="Fast Backward"/>
+<l:gentext key="nav-up" text="ಮೇಲೆ"/>
+<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:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ಅನುಬಂಧ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="ಅಧ್ಯಾಯ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ಸಮೀಕರಣ %n. %t"/>
+<l:template name="example" text="ಉದಾಹರಣೆ %n. %t"/>
+<l:template name="figure" text="ಚಿತ್ರ %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ಭಾಗ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ಕಾರ್ಯವಿಧಾನ %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ನಿರ್ಮಾಣ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ಕೋಷ್ಟಕ %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ಅನುಬಂಧ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="ಅಧ್ಯಾಯ %n. %t"/>
+<l:template name="part" text="ಭಾಗ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ಪ್ರ: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ಪ್ರ: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="sect1" text="the section called “%t”"/>
+<l:template name="sect2" text="the section called “%t”"/>
+<l:template name="sect3" text="the section called “%t”"/>
+<l:template name="sect4" text="the section called “%t”"/>
+<l:template name="sect5" text="the section called “%t”"/>
+<l:template name="section" text="the section called “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ಉ: %n"/>
+<l:template name="appendix" text="ಅನುಬಂಧ %n"/>
+<l:template name="bridgehead" text="ವಿಭಾಗ %n"/>
+<l:template name="chapter" text="ಅಧ್ಯಾಯ %n"/>
+<l:template name="equation" text="ಸಮೀಕರಣ %n"/>
+<l:template name="example" text="ಉದಾಹರಣೆ %n"/>
+<l:template name="figure" text="ಚಿತ್ರ %n"/>
+<l:template name="part" text="ಭಾಗ %n"/>
+<l:template name="procedure" text="ಕಾರ್ಯವಿಧಾನ %n"/>
+<l:template name="productionset" text="ನಿರ್ಮಾಣ %n"/>
+<l:template name="qandadiv" text="ಪ್ರ &amp; ಉ %n"/>
+<l:template name="qandaentry" text="ಪ್ರ: %n"/>
+<l:template name="question" text="ಪ್ರ: %n"/>
+<l:template name="sect1" text="ವಿಭಾಗ %n"/>
+<l:template name="sect2" text="ವಿಭಾಗ %n"/>
+<l:template name="sect3" text="ವಿಭಾಗ %n"/>
+<l:template name="sect4" text="ವಿಭಾಗ %n"/>
+<l:template name="sect5" text="ವಿಭಾಗ %n"/>
+<l:template name="section" text="ವಿಭಾಗ %n"/>
+<l:template name="table" text="ಕೋಷ್ಟಕ %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ಅನುಬಂಧ %n, %t"/>
+<l:template name="bridgehead" text="ವಿಭಾಗ %n, “%t”"/>
+<l:template name="chapter" text="ಅಧ್ಯಾಯ %n, %t"/>
+<l:template name="equation" text="ಸಮೀಕರಣ %n, “%t”"/>
+<l:template name="example" text="ಉದಾಹರಣೆ %n, “%t”"/>
+<l:template name="figure" text="ಚಿತ್ರ %n, “%t”"/>
+<l:template name="part" text="ಭಾಗ %n, “%t”"/>
+<l:template name="procedure" text="ಕಾರ್ಯವಿಧಾನ %n, “%t”"/>
+<l:template name="productionset" text="ನಿರ್ಮಾಣ %n, “%t”"/>
+<l:template name="qandadiv" text="ಪ್ರ &amp; ಉ %n, “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="sect1" text="ವಿಭಾಗ %n, “%t”"/>
+<l:template name="sect2" text="ವಿಭಾಗ %n, “%t”"/>
+<l:template name="sect3" text="ವಿಭಾಗ %n, “%t”"/>
+<l:template name="sect4" text="ವಿಭಾಗ %n, “%t”"/>
+<l:template name="sect5" text="ವಿಭಾಗ %n, “%t”"/>
+<l:template name="section" text="ವಿಭಾಗ %n, “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+<l:template name="table" text="ಕೋಷ್ಟಕ %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ಮತ್ತು "/>
+<l:template name="seplast" text=", ಮತ್ತು "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ಇದನ್ನು ನೋಡಿ %t"/>
+<l:template name="seealso" text="ಇದನ್ನೂ ಸಹ ನೋಡಿ %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ಶ್ರೋತೃಗಳು: "/>
+<l:template name="MsgLevel" text="ಸ್ತರ: "/>
+<l:template name="MsgOrig" text="ಮೂಲ: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ಜನೆವರಿ"/>
+<l:template name="February" text="ಫೆಬ್ರುವರಿ"/>
+<l:template name="March" text="ಮಾರ್ಚ್"/>
+<l:template name="April" text="ಏಪ್ರಲ್"/>
+<l:template name="May" text="ಮೇ"/>
+<l:template name="June" text="ಜೂನ್"/>
+<l:template name="July" text="ಜುಲೈ"/>
+<l:template name="August" text="ಅಗಷ್ಟ"/>
+<l:template name="September" text="ಸೆಪ್ಟೆಂಬರ್"/>
+<l:template name="October" text="ಅಕ್ಟೋಬರ್"/>
+<l:template name="November" text="ನವೆಂಬರ್"/>
+<l:template name="December" text="ಡಿಸೆಂಬರ್"/>
+<l:template name="Monday" text="ಸೋಮವಾರ"/>
+<l:template name="Tuesday" text="ಮಂಗಳವಾರ"/>
+<l:template name="Wednesday" text="ಬುಧವಾರ"/>
+<l:template name="Thursday" text="ಗುರುವಾರ"/>
+<l:template name="Friday" text="ಶುಕ್ರವಾರ"/>
+<l:template name="Saturday" text="ಶನಿವಾರ"/>
+<l:template name="Sunday" text="ರವಿವಾರ"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ಜನೆವರಿ"/>
+<l:template name="Feb" text="ಫೆಬ್ರುವರಿ"/>
+<l:template name="Mar" text="ಮಾರ್ಚ್"/>
+<l:template name="Apr" text="ಏಪ್ರಿಲ್"/>
+<l:template name="May" text="ಮೇ"/>
+<l:template name="Jun" text="ಜೂನ್"/>
+<l:template name="Jul" text="ಜುಲೈ"/>
+<l:template name="Aug" text="ಅಗಷ್ಟ"/>
+<l:template name="Sep" text="ಸೆಪ್ಟೆಂಬರ್"/>
+<l:template name="Oct" text="ಅಕ್ಟೋಬರ್"/>
+<l:template name="Nov" text="ನವೆಂಬರ್"/>
+<l:template name="Dec" text="ಡಿಸೆಂಬರ್"/>
+<l:template name="Mon" text="ಸೋಮ"/>
+<l:template name="Tue" text="ಮಂಗಳ"/>
+<l:template name="Wed" text="ಬುಧ"/>
+<l:template name="Thu" text="ಗುರು"/>
+<l:template name="Fri" text="ಶುಕ್ರ"/>
+<l:template name="Sat" text="ಶನಿ"/>
+<l:template name="Sun" text="ರವಿ"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x044b Kannada (INDIA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/ko.xml b/docs/xsl-generic/common/ko.xml
new file mode 100644
index 00000000..02a4ec01
--- /dev/null
+++ b/docs/xsl-generic/common/ko.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ko" english-language-name="Korean">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ko.xml -->
+<!-- * -->
+<!-- * E-mail the edited ko.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="초록"/>
+<l:gentext key="abstract" text="초록"/>
+<l:gentext key="Answer" text="답변"/>
+<l:gentext key="answer" text="답변"/>
+<l:gentext key="Appendix" text="부록"/>
+<l:gentext key="appendix" text="부록"/>
+<l:gentext key="Article" text="문서"/>
+<l:gentext key="article" text="문서"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="서지사항"/>
+<l:gentext key="bibliography" text="서지사항"/>
+<l:gentext key="Book" text="책"/>
+<l:gentext key="book" text="책"/>
+<l:gentext key="CAUTION" text="[경고]"/>
+<l:gentext key="Caution" text="경고"/>
+<l:gentext key="caution" text="경고"/>
+<l:gentext key="Chapter" text="장"/>
+<l:gentext key="chapter" text="장"/>
+<l:gentext key="Colophon" text="판권"/>
+<l:gentext key="colophon" text="판권"/>
+<l:gentext key="Copyright" text="저작권"/>
+<l:gentext key="copyright" text="저작권"/>
+<l:gentext key="Dedication" text="바치는 글"/>
+<l:gentext key="dedication" text="바치는 글"/>
+<l:gentext key="Edition" text="엮음"/>
+<l:gentext key="edition" text="엮음"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="수식"/>
+<l:gentext key="equation" text="수식"/>
+<l:gentext key="Example" text="예"/>
+<l:gentext key="example" text="예"/>
+<l:gentext key="Figure" text="그림"/>
+<l:gentext key="figure" text="그림"/>
+<l:gentext key="Glossary" text="용어해설"/>
+<l:gentext key="glossary" text="용어해설"/>
+<l:gentext key="GlossSee" text="살펴볼 내용"/>
+<l:gentext key="glosssee" text="살펴볼 내용"/>
+<l:gentext key="GlossSeeAlso" text="다른 살펴볼 내용"/>
+<l:gentext key="glossseealso" text="다른 살펴볼 내용"/>
+<l:gentext key="IMPORTANT" text="[중요]"/>
+<l:gentext key="important" text="중요"/>
+<l:gentext key="Important" text="중요"/>
+<l:gentext key="Index" text="색인"/>
+<l:gentext key="index" text="색인"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="법적 공지"/>
+<l:gentext key="legalnotice" text="법적 공지"/>
+<l:gentext key="MsgAud" text="받는 이"/>
+<l:gentext key="msgaud" text="받는 이"/>
+<l:gentext key="MsgLevel" text="중요도"/>
+<l:gentext key="msglevel" text="중요도"/>
+<l:gentext key="MsgOrig" text="보내는 이"/>
+<l:gentext key="msgorig" text="보내는 이"/>
+<l:gentext key="NOTE" text="[참고]"/>
+<l:gentext key="Note" text="참고"/>
+<l:gentext key="note" text="참고"/>
+<l:gentext key="Part" text="부"/>
+<l:gentext key="part" text="부"/>
+<l:gentext key="Preface" text="서문"/>
+<l:gentext key="preface" text="서문"/>
+<l:gentext key="Procedure" text="절차"/>
+<l:gentext key="procedure" text="절차"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="펴냄"/>
+<l:gentext key="published" text="펴냄"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="질문그리고답변"/>
+<l:gentext key="qandadiv" text="질문그리고답변"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="질문"/>
+<l:gentext key="question" text="질문"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="참고문헌"/>
+<l:gentext key="reference" text="참고문헌"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="제목"/>
+<l:gentext key="refname" text="제목"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="요약"/>
+<l:gentext key="refsynopsisdiv" text="요약"/>
+<l:gentext key="RevHistory" text="고친 과정"/>
+<l:gentext key="revhistory" text="고친 과정"/>
+<l:gentext key="revision" text="고침"/>
+<l:gentext key="Revision" text="고침"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="절"/>
+<l:gentext key="Section" text="절"/>
+<l:gentext key="see" text="살펴볼 내용"/>
+<l:gentext key="See" text="살펴볼 내용"/>
+<l:gentext key="seealso" text="[살펴볼 다른 내용]"/>
+<l:gentext key="Seealso" text="살펴볼 다른 내용"/>
+<l:gentext key="SeeAlso" text="[살펴볼 다른 내용]"/>
+<l:gentext key="set" text="전집"/>
+<l:gentext key="Set" text="전집"/>
+<l:gentext key="setindex" text="전집 색인"/>
+<l:gentext key="SetIndex" text="전집 색인"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="덧붙임"/>
+<l:gentext key="step" text="단계"/>
+<l:gentext key="Step" text="단계"/>
+<l:gentext key="table" text="표"/>
+<l:gentext key="Table" text="표"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="작은 정보"/>
+<l:gentext key="TIP" text="[작은 정보]"/>
+<l:gentext key="Tip" text="작은 정보"/>
+<l:gentext key="Warning" text="주의"/>
+<l:gentext key="warning" text="주의"/>
+<l:gentext key="WARNING" text="주의!"/>
+<l:gentext key="and" text="그리고"/>
+<l:gentext key="by" text="지은이"/>
+<l:gentext key="Edited" text="엮음"/>
+<l:gentext key="edited" text="엮음"/>
+<l:gentext key="Editedby" text="엮은이"/>
+<l:gentext key="editedby" text="엮은이"/>
+<l:gentext key="in" text="-"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="존재하지 않는 기초요소입니다"/>
+<l:gentext key="notes" text="주석"/>
+<l:gentext key="Notes" text="주석"/>
+<l:gentext key="Pgs" text="Pgs."/>
+<l:gentext key="pgs" text="Pgs."/>
+<l:gentext key="Revisedby" text="고친이 "/>
+<l:gentext key="revisedby" text="고친이 "/>
+<l:gentext key="TableNotes" text="참고"/>
+<l:gentext key="tablenotes" text="참고"/>
+<l:gentext key="TableofContents" text="차례"/>
+<l:gentext key="tableofcontents" text="차례"/>
+<l:gentext key="unexpectedelementname" text="알 수 없는 기초요소 이름입니다"/>
+<l:gentext key="unsupported" text="지원되지 않습니다"/>
+<l:gentext key="xrefto" text="이 곳을 참조하세요 : "/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="수식 목록"/>
+<l:gentext key="ListofEquations" text="수식 목록"/>
+<l:gentext key="ListofExamples" text="예 목록"/>
+<l:gentext key="listofexamples" text="예 목록"/>
+<l:gentext key="ListofFigures" text="그림 목록"/>
+<l:gentext key="listoffigures" text="그림 목록"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="표 목록"/>
+<l:gentext key="ListofTables" text="표 목록"/>
+<l:gentext key="ListofUnknown" text="기타 목록"/>
+<l:gentext key="listofunknown" text="기타 목록"/>
+<l:gentext key="nav-home" text="처음으로"/>
+<l:gentext key="nav-next" text="다음"/>
+<l:gentext key="nav-next-sibling" text="다음으로 건너뜀"/>
+<l:gentext key="nav-prev" text="이전"/>
+<l:gentext key="nav-prev-sibling" text="이전으로 건너뜀"/>
+<l:gentext key="nav-up" text="위로"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="부록 %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%n장. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="수식 %n. %t"/>
+<l:template name="example" text="예 %n. %t"/>
+<l:template name="figure" text="그림 %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%n부. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="절차 %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="표 %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="부록 %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="%n장. %t"/>
+<l:template name="part" text="부 %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="질문 %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="질문 %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="답변 %n"/>
+<l:template name="appendix" text="부록 %n"/>
+<l:template name="bridgehead" text="절 %n"/>
+<l:template name="chapter" text="%n장"/>
+<l:template name="equation" text="수식 %n"/>
+<l:template name="example" text="예 %n"/>
+<l:template name="figure" text="그림 %n"/>
+<l:template name="part" text="%n부"/>
+<l:template name="procedure" text="절차 %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="질문그리고답변 %n"/>
+<l:template name="qandaentry" text="질문 %n"/>
+<l:template name="question" text="질문 %n"/>
+<l:template name="sect1" text="%n절"/>
+<l:template name="sect2" text="%n절"/>
+<l:template name="sect3" text="%n절"/>
+<l:template name="sect4" text="%n절"/>
+<l:template name="sect5" text="%n절"/>
+<l:template name="section" text="%n절"/>
+<l:template name="table" text="표 %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="부록 %n. %t"/>
+<l:template name="bridgehead" text="절 %n. “%t”"/>
+<l:template name="chapter" text="%n장. %t"/>
+<l:template name="equation" text="수식 %n. “%t”"/>
+<l:template name="example" text="예 %n. “%t”"/>
+<l:template name="figure" text="그림 %n. “%t”"/>
+<l:template name="part" text="%n부. %t"/>
+<l:template name="procedure" text="절차 %n. “%t”"/>
+<l:template name="productionset" text="Production %n. “%t”"/>
+<l:template name="qandadiv" text="질문그리고답변 %n. “%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="sect1" text="%n절. “%t”"/>
+<l:template name="sect2" text="%n절. “%t”"/>
+<l:template name="sect3" text="%n절. “%t”"/>
+<l:template name="sect4" text="%n절. “%t”"/>
+<l:template name="sect5" text="%n절. “%t”"/>
+<l:template name="section" text="%n절. “%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+<l:template name="table" text="표 %n. “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" 그리고 "/>
+<l:template name="seplast" text=", 그리고 "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="살펴볼 내용 %t"/>
+<l:template name="seealso" text="다른 살펴볼 내용 %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="받는 이: "/>
+<l:template name="MsgLevel" text="중요도: "/>
+<l:template name="MsgOrig" text="보내는 이: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0412 Korean"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/l10n.dtd b/docs/xsl-generic/common/l10n.dtd
new file mode 100644
index 00000000..1d6f8361
--- /dev/null
+++ b/docs/xsl-generic/common/l10n.dtd
@@ -0,0 +1,63 @@
+<!ENTITY % prefix "l">
+
+<!ENTITY % xmlns "xmlns:%prefix;">
+<!ENTITY % uri "'http://docbook.sourceforge.net/xmlns/l10n/1.0'">
+
+<!ENTITY % i18n "%prefix;:i18n">
+<!ENTITY % l10n "%prefix;:l10n">
+<!ENTITY % gentext "%prefix;:gentext">
+<!ENTITY % dingbat "%prefix;:dingbat">
+<!ENTITY % context "%prefix;:context">
+<!ENTITY % template "%prefix;:template">
+<!ENTITY % letters "%prefix;:letters">
+<!ENTITY % l "%prefix;:l">
+<!ENTITY % lang "lang NMTOKEN #IMPLIED">
+
+<!ELEMENT %i18n; ((%l10n;)+)>
+<!ATTLIST %i18n;
+ %xmlns; CDATA #FIXED %uri;
+>
+
+<!ELEMENT %l10n; (%gentext;|%dingbat;|%context;|%letters;)*>
+<!ATTLIST %l10n;
+ %xmlns; CDATA #FIXED %uri;
+ language CDATA #REQUIRED
+ english-language-name CDATA #IMPLIED
+>
+
+<!ELEMENT %gentext; EMPTY>
+<!ATTLIST %gentext;
+ %lang;
+ key CDATA #REQUIRED
+ text CDATA #REQUIRED
+>
+
+<!ELEMENT %dingbat; EMPTY>
+<!ATTLIST %dingbat;
+ %lang;
+ key CDATA #REQUIRED
+ text CDATA #REQUIRED
+>
+
+<!ELEMENT %context; ((%template;)+)>
+<!ATTLIST %context;
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT %template; EMPTY>
+<!ATTLIST %template;
+ %lang;
+ name CDATA #REQUIRED
+ text CDATA #REQUIRED
+ style CDATA #IMPLIED
+>
+
+<!ELEMENT %letters; ((%l;)+)>
+<!ATTLIST %letters;
+ %lang;
+>
+
+<!ELEMENT %l; (#PCDATA)>
+<!ATTLIST %l;
+ i CDATA #REQUIRED
+>
diff --git a/docs/xsl-generic/common/l10n.xml b/docs/xsl-generic/common/l10n.xml
new file mode 100644
index 00000000..23b2636b
--- /dev/null
+++ b/docs/xsl-generic/common/l10n.xml
@@ -0,0 +1,127 @@
+<?xml version='1.0'?>
+<!DOCTYPE l:i18n SYSTEM "l10n.dtd" [
+<!ENTITY af SYSTEM "af.xml">
+<!ENTITY am SYSTEM "am.xml">
+<!ENTITY ar SYSTEM "ar.xml">
+<!ENTITY az SYSTEM "az.xml">
+<!ENTITY bg SYSTEM "bg.xml">
+<!ENTITY bn SYSTEM "bn.xml">
+<!ENTITY bs SYSTEM "bs.xml">
+<!ENTITY ca SYSTEM "ca.xml">
+<!ENTITY cs SYSTEM "cs.xml">
+<!ENTITY cy SYSTEM "cy.xml">
+<!ENTITY da SYSTEM "da.xml">
+<!ENTITY de SYSTEM "de.xml">
+<!ENTITY el SYSTEM "el.xml">
+<!ENTITY en SYSTEM "en.xml">
+<!ENTITY eo SYSTEM "eo.xml">
+<!ENTITY es SYSTEM "es.xml">
+<!ENTITY et SYSTEM "et.xml">
+<!ENTITY eu SYSTEM "eu.xml">
+<!ENTITY fa SYSTEM "fa.xml">
+<!ENTITY fi SYSTEM "fi.xml">
+<!ENTITY fr SYSTEM "fr.xml">
+<!ENTITY ga SYSTEM "ga.xml">
+<!ENTITY gu SYSTEM "gu.xml">
+<!ENTITY he SYSTEM "he.xml">
+<!ENTITY hi SYSTEM "hi.xml">
+<!ENTITY hr SYSTEM "hr.xml">
+<!ENTITY hu SYSTEM "hu.xml">
+<!ENTITY id SYSTEM "id.xml">
+<!ENTITY it SYSTEM "it.xml">
+<!ENTITY ja SYSTEM "ja.xml">
+<!ENTITY kn SYSTEM "kn.xml">
+<!ENTITY ko SYSTEM "ko.xml">
+<!ENTITY la SYSTEM "la.xml">
+<!ENTITY lit SYSTEM "lt.xml">
+<!ENTITY lv SYSTEM "lv.xml">
+<!ENTITY mn SYSTEM "mn.xml">
+<!ENTITY nl SYSTEM "nl.xml">
+<!ENTITY nn SYSTEM "nn.xml">
+<!ENTITY no SYSTEM "no.xml">
+<!ENTITY or SYSTEM "or.xml">
+<!ENTITY pa SYSTEM "pa.xml">
+<!ENTITY pl SYSTEM "pl.xml">
+<!ENTITY pt_br SYSTEM "pt_br.xml">
+<!ENTITY pt SYSTEM "pt.xml">
+<!ENTITY ro SYSTEM "ro.xml">
+<!ENTITY ru SYSTEM "ru.xml">
+<!ENTITY sk SYSTEM "sk.xml">
+<!ENTITY sl SYSTEM "sl.xml">
+<!ENTITY sq SYSTEM "sq.xml">
+<!ENTITY sr_Latn SYSTEM "sr_Latn.xml">
+<!ENTITY sr SYSTEM "sr.xml">
+<!ENTITY sv SYSTEM "sv.xml">
+<!ENTITY ta SYSTEM "ta.xml">
+<!ENTITY th SYSTEM "th.xml">
+<!ENTITY tl SYSTEM "tl.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;
+&am;
+&ar;
+&az;
+&bg;
+&bn;
+&bs;
+&ca;
+&cs;
+&cy;
+&da;
+&de;
+&el;
+&en;
+&eo;
+&es;
+&et;
+&eu;
+&fa;
+&fi;
+&fr;
+&ga;
+&gu;
+&he;
+&hi;
+&hr;
+&hu;
+&id;
+&it;
+&ja;
+&kn;
+&ko;
+&la;
+&lit;
+&lv;
+&mn;
+&nl;
+&nn;
+&no;
+&or;
+&pa;
+&pl;
+&pt;
+&pt_br;
+&ro;
+&ru;
+&sk;
+&sl;
+&sq;
+&sr;
+&sr_Latn;
+&sv;
+&ta;
+&th;
+&tl;
+&tr;
+&uk;
+&vi;
+&xh;
+&zh_cn;
+&zh_tw;
+</l:i18n>
diff --git a/docs/xsl-generic/common/l10n.xsl b/docs/xsl-generic/common/l10n.xsl
new file mode 100644
index 00000000..c385a788
--- /dev/null
+++ b/docs/xsl-generic/common/l10n.xsl
@@ -0,0 +1,441 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
+ exclude-result-prefixes="l"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: l10n.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ This file contains localization templates (for internationalization)
+ ******************************************************************** -->
+
+<xsl:param name="l10n.xml" select="document('../common/l10n.xml')"/>
+<xsl:param name="local.l10n.xml" select="document('')"/>
+
+<xsl:template name="l10n.language">
+ <xsl:param name="target" select="."/>
+ <xsl:param name="xref-context" select="false()"/>
+
+ <xsl:variable name="mc-language">
+ <xsl:choose>
+ <xsl:when test="$l10n.gentext.language != ''">
+ <xsl:value-of select="$l10n.gentext.language"/>
+ </xsl:when>
+
+ <xsl:when test="$xref-context or $l10n.gentext.use.xref.language != 0">
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="$target/ancestor-or-self::*
+ [@lang or @xml:lang][1]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="$target/ancestor-or-self::*
+ [@lang or @xml:lang][1]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="language" select="translate($mc-language,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ 'abcdefghijklmnopqrstuvwxyz')"/>
+
+ <xsl: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:choose>
+ <xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=$adjusted.language]">
+ <xsl:value-of select="$adjusted.language"/>
+ </xsl:when>
+ <!-- try just the lang code without country -->
+ <xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=substring-before($adjusted.language,'_')]">
+ <xsl:value-of select="substring-before($adjusted.language,'_')"/>
+ </xsl:when>
+ <!-- or use the default -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>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>
+
+<xsl:template name="language.attribute">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="language">
+ <xsl:choose>
+ <xsl:when test="$l10n.gentext.language != ''">
+ <xsl:value-of select="$l10n.gentext.language"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="$node/ancestor-or-self::*
+ [@lang or @xml:lang][1]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$language != ''">
+ <xsl:attribute name="lang">
+ <xsl:choose>
+ <xsl:when test="$l10n.lang.value.rfc.compliant != 0">
+ <xsl:value-of select="translate($language, '_', '-')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- FIXME: This is sort of hack, but it was the easiest way to add at least partial support for dir attribute -->
+ <xsl:copy-of select="ancestor-or-self::*[@dir][1]/@dir"/>
+</xsl:template>
+
+<xsl:template name="gentext">
+ <xsl:param name="key" select="local-name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:variable name="local.l10n.gentext"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
+
+ <xsl:variable name="l10n.gentext"
+ select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$local.l10n.gentext">
+ <xsl:value-of select="$local.l10n.gentext/@text"/>
+ </xsl:when>
+ <xsl:when test="$l10n.gentext">
+ <xsl:value-of select="$l10n.gentext/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of "</xsl:text>
+ <xsl:value-of select="$key"/>
+ <xsl:text>" exists</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$lang = 'en'">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>; using "en".</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:message>
+
+ <xsl:value-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:gentext[@key=$key])[1]/@text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="gentext.element.name">
+ <xsl:param name="element.name" select="local-name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$element.name"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.space">
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template name="gentext.edited.by">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Editedby'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.by">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'by'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.dingbat">
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:variable name="local.l10n.dingbat"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
+
+ <xsl:variable name="l10n.dingbat"
+ select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$local.l10n.dingbat">
+ <xsl:value-of select="$local.l10n.dingbat/@text"/>
+ </xsl:when>
+ <xsl:when test="$l10n.dingbat">
+ <xsl:value-of select="$l10n.dingbat/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization of dingbat </xsl:text>
+ <xsl:value-of select="$dingbat"/>
+ <xsl:text> exists; using "en".</xsl:text>
+ </xsl:message>
+
+ <xsl:value-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:dingbat[@key=$dingbat])[1]/@text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="gentext.startquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">startquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.endquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">endquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nestedstartquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">nestedstartquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nestedendquote">
+ <xsl:call-template name="gentext.dingbat">
+ <xsl:with-param name="dingbat">nestedendquote</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nav.prev">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-prev'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nav.next">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-next'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nav.home">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-home'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="gentext.nav.up">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-up'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="gentext.template">
+ <xsl:param name="context" select="'default'"/>
+ <xsl:param name="name" select="'default'"/>
+ <xsl:param name="origname" select="$name"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="local.localization.node"
+ select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang])[1]"/>
+
+ <xsl:variable name="localization.node"
+ select="($l10n.xml/l:i18n/l:l10n[@language=$lang])[1]"/>
+
+ <xsl:if test="count($localization.node) = 0
+ and count($local.localization.node) = 0
+ and $verbose != 0">
+ <xsl:message>
+ <xsl:text>No "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization exists.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="local.context.node"
+ select="$local.localization.node/l:context[@name=$context]"/>
+
+ <xsl:variable name="context.node"
+ select="$localization.node/l:context[@name=$context]"/>
+
+ <xsl:if test="count($context.node) = 0
+ and count($local.context.node) = 0
+ and $verbose != 0">
+ <xsl:message>
+ <xsl:text>No context named "</xsl:text>
+ <xsl:value-of select="$context"/>
+ <xsl:text>" exists in the "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="local.template.node"
+ select="($local.context.node/l:template[@name=$name
+ and @style
+ and @style=$xrefstyle]
+ |$local.context.node/l:template[@name=$name
+ and not(@style)])[1]"/>
+
+ <xsl: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="$local.template.node/@text">
+ <xsl:value-of select="$local.template.node/@text"/>
+ </xsl:when>
+ <xsl:when test="$template.node/@text">
+ <xsl:value-of select="$template.node/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="contains($name, '/')">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name" select="substring-after($name, '/')"/>
+ <xsl:with-param name="origname" select="$origname"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$verbose = 0">
+ <!-- silence -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No template for "</xsl:text>
+ <xsl:value-of select="$origname"/>
+ <xsl:text>" (or any of its leaves) exists
+in the context named "</xsl:text>
+ <xsl:value-of select="$context"/>
+ <xsl:text>" in the "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- silently test if a gentext template exists -->
+
+<xsl:template name="gentext.template.exists">
+ <xsl:param name="context" select="'default'"/>
+ <xsl:param name="name" select="'default'"/>
+ <xsl:param name="origname" select="$name"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="referrer"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="origname" select="$origname"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($template) != 0">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/common/la.xml b/docs/xsl-generic/common/la.xml
new file mode 100644
index 00000000..ee1a4ec4
--- /dev/null
+++ b/docs/xsl-generic/common/la.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="la" english-language-name="Latin">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/la.xml -->
+<!-- * -->
+<!-- * E-mail the edited la.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Summarium"/>
+<l:gentext key="abstract" text="summarium"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="r:"/>
+<l:gentext key="Appendix" text="Additamentum"/>
+<l:gentext key="appendix" text="additamentum"/>
+<l:gentext key="Article" text="Articulus"/>
+<l:gentext key="article" text="articulus"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Conspectus librorum"/>
+<l:gentext key="bibliography" text="conspectus librorum"/>
+<l:gentext key="Book" text="Liber"/>
+<l:gentext key="book" text="liber"/>
+<l:gentext key="CAUTION" text="Caveat"/>
+<l:gentext key="Caution" text="Caveat"/>
+<l:gentext key="caution" text="caveat"/>
+<l:gentext key="Chapter" text="Capitulum"/>
+<l:gentext key="chapter" text="capitulum"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="colophon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="copyright"/>
+<l:gentext key="Dedication" text="Dedicatoria"/>
+<l:gentext key="dedication" text="dedicatoria"/>
+<l:gentext key="Edition" text="Editio"/>
+<l:gentext key="edition" text="editio"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Equatio"/>
+<l:gentext key="equation" text="equatio"/>
+<l:gentext key="Example" text="Exemplum"/>
+<l:gentext key="example" text="exemplum"/>
+<l:gentext key="Figure" text="Descriptio"/>
+<l:gentext key="figure" text="descriptio"/>
+<l:gentext key="Glossary" text="Glossarium"/>
+<l:gentext key="glossary" text="glossarium"/>
+<l:gentext key="GlossSee" text="Cfr."/>
+<l:gentext key="glosssee" text="Cfr."/>
+<l:gentext key="GlossSeeAlso" text="Cfr. autem"/>
+<l:gentext key="glossseealso" text="cfr. autem"/>
+<l:gentext key="IMPORTANT" text="GRAVE"/>
+<l:gentext key="important" text="grave"/>
+<l:gentext key="Important" text="Grave"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="isbn"/>
+<l:gentext key="LegalNotice" text="Nuntius legalis"/>
+<l:gentext key="legalnotice" text="nuntius legalis"/>
+<l:gentext key="MsgAud" text="Legentes"/>
+<l:gentext key="msgaud" text="legentes"/>
+<l:gentext key="MsgLevel" text="Libra"/>
+<l:gentext key="msglevel" text="libra"/>
+<l:gentext key="MsgOrig" text="Fons"/>
+<l:gentext key="msgorig" text="fons"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="nota"/>
+<l:gentext key="Part" text="Pars"/>
+<l:gentext key="part" text="pars"/>
+<l:gentext key="Preface" text="Praefatio"/>
+<l:gentext key="preface" text="praefatio"/>
+<l:gentext key="Procedure" text="Progressio"/>
+<l:gentext key="procedure" text="progressio"/>
+<l:gentext key="ProductionSet" text="Compositio"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Editum"/>
+<l:gentext key="published" text="editum"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; R"/>
+<l:gentext key="qandadiv" text="Q &amp; R"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="q:"/>
+<l:gentext key="RefEntry" text="Mentionis descriptio"/>
+<l:gentext key="refentry" text="mentionis descriptio"/>
+<l:gentext key="Reference" text="Mentio"/>
+<l:gentext key="reference" text="mentio"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Mentionis signum"/>
+<l:gentext key="refname" text="mentionis signum"/>
+<l:gentext key="RefSection" text="Mentionis pars"/>
+<l:gentext key="refsection" text="mentionis pars"/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Revisionum historia"/>
+<l:gentext key="revhistory" text="revisionum historia"/>
+<l:gentext key="revision" text="Revisio"/>
+<l:gentext key="Revision" text="revisio"/>
+<l:gentext key="sect1" text="Sectio"/>
+<l:gentext key="sect2" text="Sectio"/>
+<l:gentext key="sect3" text="Sectio"/>
+<l:gentext key="sect4" text="Sectio"/>
+<l:gentext key="sect5" text="Sectio"/>
+<l:gentext key="section" text="Sectio"/>
+<l:gentext key="Section" text="Sectio"/>
+<l:gentext key="see" text="videtur"/>
+<l:gentext key="See" text="See" lang="en"/>
+<l:gentext key="seealso" text="videtur autem"/>
+<l:gentext key="Seealso" text="See also" lang="en"/>
+<l:gentext key="SeeAlso" text="See Also" lang="en"/>
+<l:gentext key="set" text="complexus"/>
+<l:gentext key="Set" text="Complexus"/>
+<l:gentext key="setindex" text="complexi index"/>
+<l:gentext key="SetIndex" text="Complexi index"/>
+<l:gentext key="Sidebar" text="Linea a latere posita"/>
+<l:gentext key="sidebar" text="linea a latere posita"/>
+<l:gentext key="step" text="peractio"/>
+<l:gentext key="Step" text="Peractio"/>
+<l:gentext key="table" text="tabula"/>
+<l:gentext key="Table" text="Tabula"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="consilium"/>
+<l:gentext key="TIP" text="CONSILIUM"/>
+<l:gentext key="Tip" text="Consilium"/>
+<l:gentext key="Warning" text="MONITUS"/>
+<l:gentext key="warning" text="monitus"/>
+<l:gentext key="WARNING" text="MONITUS"/>
+<l:gentext key="and" text="et"/>
+<l:gentext key="by" text="a"/>
+<l:gentext key="Edited" text="Editum"/>
+<l:gentext key="edited" text="editum"/>
+<l:gentext key="Editedby" text="Editum a"/>
+<l:gentext key="editedby" text="editum a"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="quod non est"/>
+<l:gentext key="notes" text="commentaria"/>
+<l:gentext key="Notes" text="Commentaria"/>
+<l:gentext key="Pgs" text="Pag."/>
+<l:gentext key="pgs" text="pag."/>
+<l:gentext key="Revisedby" text="Excussum a: "/>
+<l:gentext key="revisedby" text="excussum a: "/>
+<l:gentext key="TableNotes" text="Tabulae commentaria"/>
+<l:gentext key="tablenotes" text="tabulae commentaria"/>
+<l:gentext key="TableofContents" text="Index rerum notabilium"/>
+<l:gentext key="tableofcontents" text="index rerum notabilium"/>
+<l:gentext key="unexpectedelementname" text="necopinatum nomen"/>
+<l:gentext key="unsupported" text="non sustentatus"/>
+<l:gentext key="xrefto" text="mentio"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="index aequationum"/>
+<l:gentext key="ListofEquations" text="Index aequationum"/>
+<l:gentext key="ListofExamples" text="Index exemplorum"/>
+<l:gentext key="listofexamples" text="index exemplorum"/>
+<l:gentext key="ListofFigures" text="Index descriptionum"/>
+<l:gentext key="listoffigures" text="index descriptionum"/>
+<l:gentext key="ListofProcedures" text="Index progressiorum"/>
+<l:gentext key="listofprocedures" text="index progressiorum"/>
+<l:gentext key="listoftables" text="index tabularum"/>
+<l:gentext key="ListofTables" text="Index tabularum"/>
+<l:gentext key="ListofUnknown" text="Index ignotorum"/>
+<l:gentext key="listofunknown" text="index ignotorum"/>
+<l:gentext key="nav-home" text="Initium"/>
+<l:gentext key="nav-next" text="Sequens"/>
+<l:gentext key="nav-next-sibling" text="Procede"/>
+<l:gentext key="nav-prev" text="Praecedens"/>
+<l:gentext key="nav-prev-sibling" text="Recede"/>
+<l:gentext key="nav-up" text="Ascende"/>
+<l:gentext key="nav-toc" text="Index"/>
+<l:gentext key="Draft" text="Plagula"/>
+<l:gentext key="above" text="supra"/>
+<l:gentext key="below" text="sub"/>
+<l:gentext key="sectioncalled" text="sectio vocata"/>
+<l:gentext key="index symbols" text="signa"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="ˢ"/>
+<l:dingbat key="endquote" text="ۢ"/>
+<l:dingbat key="nestedstartquote" text="‹"/>
+<l:dingbat key="nestedendquote" text="›"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="‐"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Additamentum%n.%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capitulum%n.%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equatio%n.%t"/>
+<l:template name="example" text="Exemplum%n.%t"/>
+<l:template name="figure" text="Descriptio%n.%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Pars%n.%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Progressio%n.%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Compositio%n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabula%n.%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Additamentum%n.%t"/>
+<l:template name="article/appendix" text="%n.%t"/>
+<l:template name="bridgehead" text="%n.%t"/>
+<l:template name="chapter" text="Capitulum%n.%t"/>
+<l:template name="part" text="Pars%n.%t"/>
+<l:template name="sect1" text="%n.%t"/>
+<l:template name="sect2" text="%n.%t"/>
+<l:template name="sect3" text="%n.%t"/>
+<l:template name="sect4" text="%n.%t"/>
+<l:template name="sect5" text="%n.%t"/>
+<l:template name="section" text="%n.%t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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:%n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q:%n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q:%n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsection" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect1" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect2" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect3" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect1" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect2" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect3" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect4" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect5" text="sectio vocata ˢ%tۢ"/>
+<l:template name="section" text="sectio vocata ˢ%tۢ"/>
+<l:template name="simplesect" text="sectio vocata ˢ%tۢ"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R:%n"/>
+<l:template name="appendix" text="Additamentum%n"/>
+<l:template name="bridgehead" text="Sectio%n"/>
+<l:template name="chapter" text="Capitulum%n"/>
+<l:template name="equation" text="Equatio%n"/>
+<l:template name="example" text="Exemplum%n"/>
+<l:template name="figure" text="Descriptio%n"/>
+<l:template name="part" text="Pars%n"/>
+<l:template name="procedure" text="Progressio%n"/>
+<l:template name="productionset" text="Compositio%n"/>
+<l:template name="qandadiv" text="Q &amp; R%n"/>
+<l:template name="qandaentry" text="Q:%n"/>
+<l:template name="question" text="Q:%n"/>
+<l:template name="sect1" text="Sectio%n"/>
+<l:template name="sect2" text="Sectio%n"/>
+<l:template name="sect3" text="Sectio%n"/>
+<l:template name="sect4" text="Sectio%n"/>
+<l:template name="sect5" text="Sectio%n"/>
+<l:template name="section" text="Sectio%n"/>
+<l:template name="table" text="Tabula%n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Additamentum%n, %t"/>
+<l:template name="bridgehead" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="chapter" text="Capitulum%n, %t"/>
+<l:template name="equation" text="Equatio%n, ˢ%tۢ"/>
+<l:template name="example" text="Exemplum%n, ˢ%tۢ"/>
+<l:template name="figure" text="Descriptio%n, ˢ%tۢ"/>
+<l:template name="part" text="Pars%n, ˢ%tۢ"/>
+<l:template name="procedure" text="Progressio%n, ˢ%tۢ"/>
+<l:template name="productionset" text="Compositio%n, ˢ%tۢ"/>
+<l:template name="qandadiv" text="Q &amp; R%n, ˢ%tۢ"/>
+<l:template name="refsect1" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect2" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsect3" text="sectio vocata ˢ%tۢ"/>
+<l:template name="refsection" text="sectio vocata ˢ%tۢ"/>
+<l:template name="sect1" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="sect2" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="sect3" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="sect4" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="sect5" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="section" text="Sectio%n, ˢ%tۢ"/>
+<l:template name="simplesect" text="sectio vocata ˢ%tۢ"/>
+<l:template name="table" text="Tabula%n, ˢ%tۢ"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" et "/>
+<l:template name="seplast" text=", et "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Cfr. %t"/>
+<l:template name="seealso" text="Cfr. autem %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Legentes: "/>
+<l:template name="MsgLevel" text="Libra: "/>
+<l:template name="MsgOrig" text="Fons: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Ianuarii"/>
+<l:template name="February" text="Februarii"/>
+<l:template name="March" text="Martii"/>
+<l:template name="April" text="Aprilis"/>
+<l:template name="May" text="Maii"/>
+<l:template name="June" text="Iunii"/>
+<l:template name="July" text="Iulii"/>
+<l:template name="August" text="Augusti"/>
+<l:template name="September" text="Septembris"/>
+<l:template name="October" text="Octobris"/>
+<l:template name="November" text="Novembris"/>
+<l:template name="December" text="Decembris"/>
+<l:template name="Monday" text="Lunae"/>
+<l:template name="Tuesday" text="Martis"/>
+<l:template name="Wednesday" text="Mercurii"/>
+<l:template name="Thursday" text="Iovis"/>
+<l:template name="Friday" text="Veneris"/>
+<l:template name="Saturday" text="Sabathi"/>
+<l:template name="Sunday" text="Dominica"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ian"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Iun"/>
+<l:template name="Jul" text="Iul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Lun"/>
+<l:template name="Tue" text="Mar"/>
+<l:template name="Wed" text="Mer"/>
+<l:template name="Thu" text="Iov"/>
+<l:template name="Fri" text="Ven"/>
+<l:template name="Sat" text="Sab"/>
+<l:template name="Sun" text="Dom"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)" lang="en"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/labels.xsl b/docs/xsl-generic/common/labels.xsl
new file mode 100644
index 00000000..5596f1b7
--- /dev/null
+++ b/docs/xsl-generic/common/labels.xsl
@@ -0,0 +1,869 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: labels.xsl 7031 2007-07-14 19:58:59Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- label markup -->
+
+<doc:mode mode="label.markup" xmlns="">
+<refpurpose>Provides access to element labels</refpurpose>
+<refdescription id="label.markup-desc">
+<para>Processing an element in the
+<literal role="mode">label.markup</literal> mode produces the
+element label.</para>
+<para>Trailing punctuation is not added to the label.
+</para>
+</refdescription>
+</doc:mode>
+
+<xsl:template match="*" mode="intralabel.punctuation">
+ <xsl:text>.</xsl:text>
+</xsl:template>
+
+<xsl:template match="*" mode="label.markup">
+ <xsl:param name="verbose" select="1"/>
+ <xsl:if test="$verbose">
+ <xsl:message>
+ <xsl:text>Request for label of unexpected element: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:message>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="set|book" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="part" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($part.autolabel) != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$part.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:number from="book" count="part" format="{$format}"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="partintro" mode="label.markup">
+ <!-- no label -->
+</xsl:template>
+
+<xsl:template match="preface" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($preface.autolabel) != 0">
+ <xsl:if test="$component.label.includes.part.label != 0 and
+ ancestor::part">
+ <xsl:variable name="part.label">
+ <xsl:apply-templates select="ancestor::part"
+ mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$part.label != ''">
+ <xsl:value-of select="$part.label"/>
+ <xsl:apply-templates select="ancestor::part"
+ mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$preface.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="preface" format="{$format}" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book" count="preface" format="{$format}" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="chapter" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($chapter.autolabel) != 0">
+ <xsl:if test="$component.label.includes.part.label != 0 and
+ ancestor::part">
+ <xsl:variable name="part.label">
+ <xsl:apply-templates select="ancestor::part"
+ mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$part.label != ''">
+ <xsl:value-of select="$part.label"/>
+ <xsl:apply-templates select="ancestor::part"
+ mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$chapter.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="chapter" format="{$format}" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book" count="chapter" format="{$format}" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="appendix" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($appendix.autolabel) != 0">
+ <xsl:if test="$component.label.includes.part.label != 0 and
+ ancestor::part">
+ <xsl:variable name="part.label">
+ <xsl:apply-templates select="ancestor::part"
+ mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$part.label != ''">
+ <xsl:value-of select="$part.label"/>
+ <xsl:apply-templates select="ancestor::part"
+ mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$appendix.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="appendix" format="{$format}" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book|article"
+ count="appendix" format="{$format}" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="article" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="dedication|colophon" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="reference" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="string($reference.autolabel) != 0">
+ <xsl:if test="$component.label.includes.part.label != 0 and
+ ancestor::part">
+ <xsl:variable name="part.label">
+ <xsl:apply-templates select="ancestor::part"
+ mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$part.label != ''">
+ <xsl:value-of select="$part.label"/>
+ <xsl:apply-templates select="ancestor::part"
+ mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$reference.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$label.from.part != 0 and ancestor::part">
+ <xsl:number from="part" count="reference" format="{$format}" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number from="book" count="reference" format="{$format}" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="refentry" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="section" mode="label.markup">
+ <!-- if this is a nested section, label the parent -->
+ <xsl:if test="local-name(..) = 'section'">
+ <xsl:variable name="parent.section.label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$parent.section.label != '0'">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+
+ <!-- if the parent is a component, maybe label that too -->
+ <xsl:variable name="parent.is.component">
+ <xsl:call-template name="is.component">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- does this section get labelled? -->
+ <xsl:variable name="label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$section.label.includes.component.label != 0
+ and $parent.is.component != 0">
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+
+<!--
+ <xsl:message>
+ test: <xsl:value-of select="$label"/>, <xsl:number count="section"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$label != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:number format="{$format}" count="section"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1" mode="label.markup">
+ <!-- if the parent is a component, maybe label that too -->
+ <xsl:variable name="parent.is.component">
+ <xsl:call-template name="is.component">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="component.label">
+ <xsl:if test="$section.label.includes.component.label != 0
+ and $parent.is.component != 0">
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:variable>
+
+
+ <xsl:variable name="is.numbered">
+ <xsl:call-template name="label.this.section"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$is.numbered != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:copy-of select="$component.label"/>
+ <xsl:number format="{$format}" count="sect1"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect2|sect3|sect4|sect5" mode="label.markup">
+ <!-- label the parent -->
+ <xsl:variable name="parent.section.label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$parent.section.label != '0'">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+
+ <xsl:variable name="is.numbered">
+ <xsl:call-template name="label.this.section"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$is.numbered != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'sect2'">
+ <xsl:number format="{$format}" count="sect2"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect3'">
+ <xsl:number format="{$format}" count="sect3"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect4'">
+ <xsl:number format="{$format}" count="sect4"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect5'">
+ <xsl:number format="{$format}" count="sect5"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>label.markup: this can't happen!</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="label.markup">
+ <!-- FIXME: could we do a better job here? -->
+ <xsl:variable name="contsec"
+ select="(ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface)[last()]"/>
+
+ <xsl:apply-templates select="$contsec" mode="label.markup"/>
+</xsl:template>
+
+<xsl:template match="refsect1" mode="label.markup">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:number count="refsect1" format="{$format}"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="refsect2|refsect3" mode="label.markup">
+ <!-- label the parent -->
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$section.autolabel != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'refsect2'">
+ <xsl:number count="refsect2" format="{$format}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number count="refsect3" format="{$format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="simplesect" mode="label.markup">
+ <!-- if this is a nested section, label the parent -->
+ <xsl:if test="local-name(..) = 'section'
+ or local-name(..) = 'sect1'
+ or local-name(..) = 'sect2'
+ or local-name(..) = 'sect3'
+ or local-name(..) = 'sect4'
+ or local-name(..) = 'sect5'">
+ <xsl:variable name="parent.section.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.section.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+
+ <!-- if the parent is a component, maybe label that too -->
+ <xsl:variable name="parent.is.component">
+ <xsl:call-template name="is.component">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- does this section get labelled? -->
+ <xsl:variable name="label">
+ <xsl:call-template name="label.this.section">
+ <xsl:with-param name="section" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$section.label.includes.component.label != 0
+ and $parent.is.component != 0">
+ <xsl:variable name="parent.label">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="$parent.label != ''">
+ <xsl:apply-templates select=".." mode="label.markup"/>
+ <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$label != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$section.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:number format="{$format}" count="simplesect"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="label.markup">
+ <xsl:variable name="lparent" select="(ancestor::set
+ |ancestor::book
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface
+ |ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3)[last()]"/>
+
+ <xsl:variable name="lparent.prefix">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="$qanda.inherit.numeration != 0">
+ <xsl:if test="$lparent.prefix != ''">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ <xsl:apply-templates select="$lparent" mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$qandadiv.autolabel != 0">
+ <xsl:variable name="format">
+ <xsl:call-template name="autolabel.format">
+ <xsl:with-param name="format" select="$qandadiv.autolabel"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prefix"/>
+ <xsl:number level="multiple" count="qandadiv" format="{$format}"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="question|answer" mode="label.markup">
+ <xsl:variable name="lparent" select="(ancestor::set
+ |ancestor::book
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface
+ |ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3)[last()]"/>
+
+ <xsl:variable name="lparent.prefix">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ </xsl:variable>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="$qanda.inherit.numeration != 0">
+ <xsl:choose>
+ <xsl:when test="ancestor::qandadiv">
+ <xsl:apply-templates select="ancestor::qandadiv[1]" mode="label.markup"/>
+ <xsl:apply-templates select="ancestor::qandadiv[1]"
+ mode="intralabel.punctuation"/>
+ </xsl:when>
+ <xsl:when test="$lparent.prefix != ''">
+ <xsl:apply-templates select="$lparent" mode="label.markup"/>
+ <xsl:apply-templates select="$lparent" mode="intralabel.punctuation"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="inhlabel"
+ select="ancestor-or-self::qandaset/@defaultlabel[1]"/>
+
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="$inhlabel != ''">
+ <xsl:value-of select="$inhlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="label" select="label"/>
+
+ <xsl:choose>
+ <xsl:when test="count($label)>0">
+ <xsl:apply-templates select="$label"/>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'qanda' and local-name(.) = 'question'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Question'"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'qanda' and local-name(.) = 'answer'">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Answer'"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$deflabel = 'number' and local-name(.) = 'question'">
+ <xsl:value-of select="$prefix"/>
+ <xsl:number level="multiple" count="qandaentry" format="1"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliography|glossary|
+ qandaset|index|setindex" mode="label.markup">
+ <xsl:if test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="figure|table|example" mode="label.markup">
+ <xsl:variable name="pchap"
+ select="ancestor::chapter
+ |ancestor::appendix
+ |ancestor::article[ancestor::book]"/>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="count($pchap) &gt; 0">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$prefix != ''">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
+ <xsl:number format="1" from="chapter|appendix" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number format="1" from="book|article" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="procedure" mode="label.markup">
+ <xsl:variable name="pchap"
+ select="ancestor::chapter
+ |ancestor::appendix
+ |ancestor::article[ancestor::book]"/>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="count($pchap) &gt; 0">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="$formal.procedures = 0">
+ <!-- No label -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="count($pchap)>0">
+ <xsl:if test="$prefix != ''">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
+ </xsl:if>
+ <xsl:number count="procedure[title]" format="1"
+ from="chapter|appendix" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number count="procedure[title]" format="1"
+ from="book|article" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="equation" mode="label.markup">
+ <xsl:variable name="pchap"
+ select="ancestor::chapter
+ |ancestor::appendix
+ |ancestor::article[ancestor::book]"/>
+
+ <xsl:variable name="prefix">
+ <xsl:if test="count($pchap) &gt; 0">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="count($pchap)>0">
+ <xsl:if test="$prefix != ''">
+ <xsl:apply-templates select="$pchap" mode="label.markup"/>
+ <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
+ </xsl:if>
+ <xsl:number format="1" count="equation[title or info/title]"
+ from="chapter|appendix" level="any"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number format="1" count="equation[title or info/title]"
+ from="book|article" level="any"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem" mode="label.markup">
+ <xsl:variable name="numeration">
+ <xsl:call-template name="list.numeration">
+ <xsl:with-param name="node" select="parent::orderedlist"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="$numeration='arabic'">1</xsl:when>
+ <xsl:when test="$numeration='loweralpha'">a</xsl:when>
+ <xsl:when test="$numeration='lowerroman'">i</xsl:when>
+ <xsl:when test="$numeration='upperalpha'">A</xsl:when>
+ <xsl:when test="$numeration='upperroman'">I</xsl:when>
+ <!-- What!? This should never happen -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected numeration: </xsl:text>
+ <xsl:value-of select="$numeration"/>
+ </xsl:message>
+ <xsl:value-of select="1."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="item-number">
+ <xsl:call-template name="orderedlist-item-number"/>
+ </xsl:variable>
+
+ <xsl:number value="$item-number" format="{$type}"/>
+</xsl:template>
+
+<xsl:template match="abstract" mode="label.markup">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="sidebar" mode="label.markup">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="label.this.section">
+ <xsl:param name="section" select="."/>
+
+ <xsl:variable name="level">
+ <xsl:call-template name="section.level"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$level &lt;= $section.autolabel.max.depth">
+ <xsl:value-of select="$section.autolabel"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<doc:template name="label.this.section" xmlns="">
+<refpurpose>Returns true if $section should be labelled</refpurpose>
+<refdescription id="label.this.section-desc">
+<para>Returns true if the specified section should be labelled.
+By default, this template returns zero unless
+the section level is less than or equal to the value of the
+<literal>$section.autolabel.max.depth</literal> parameter, in
+which case it returns
+<literal>$section.autolabel</literal>.
+Custom stylesheets may override it to get more selective behavior.</para>
+</refdescription>
+</doc:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="default.autolabel.format">
+ <xsl:param name="context" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($context) = 'appendix'">
+ <xsl:value-of select="'A'"/>
+ </xsl:when>
+ <xsl:when test="local-name($context) = 'part'">
+ <xsl:value-of select="'I'"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="autolabel.format">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="format"/>
+
+ <xsl:choose>
+ <xsl:when test="string($format) != 0">
+ <xsl:choose>
+ <xsl:when test="string($format)='arabic' or $format='1'">1</xsl:when>
+ <xsl:when test="$format='loweralpha' or $format='a'">
+ <xsl:value-of select="'a'"/>
+ </xsl:when>
+ <xsl:when test="$format='lowerroman' or $format='i'">
+ <xsl:value-of select="'i'"/>
+ </xsl:when>
+ <xsl:when test="$format='upperalpha' or $format='A'">
+ <xsl:value-of select="'A'"/>
+ </xsl:when>
+ <xsl:when test="$format='upperroman' or $format='I'">
+ <xsl:value-of select="'I'"/>
+ </xsl:when>
+ <xsl:when test="$format='arabicindic' or $format='&#x661;'">
+ <xsl:value-of select="'&#x661;'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected </xsl:text><xsl:value-of select="local-name(.)"/><xsl:text>.autolabel value: </xsl:text>
+ <xsl:value-of select="$format"/><xsl:text>; using default.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="default.autolabel.format"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<doc:template name="autolabel.format" xmlns="">
+<refpurpose>Returns format for autolabel parameters</refpurpose>
+<refdescription id="autolabel.format-desc">
+<para>Returns format passed as parameter if non zero. Supported
+ format are 'arabic' or '1', 'loweralpha' or 'a', 'lowerroman' or 'i',
+ 'upperlapha' or 'A', 'upperroman' or 'I', 'arabicindic' or '&#x661;'.
+ If its not one of these then
+ returns the default format.</para>
+</refdescription>
+</doc:template>
+
+<!-- ============================================================ -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/lt.xml b/docs/xsl-generic/common/lt.xml
new file mode 100644
index 00000000..7ee48f07
--- /dev/null
+++ b/docs/xsl-generic/common/lt.xml
@@ -0,0 +1,672 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="lt" english-language-name="Lithuanian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/lt.xml -->
+<!-- * -->
+<!-- * E-mail the edited lt.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Santrauka"/>
+<l:gentext key="abstract" text="Santrauka"/>
+<l:gentext key="Answer" text="Ats:"/>
+<l:gentext key="answer" text="Ats:"/>
+<l:gentext key="Appendix" text="Priedas"/>
+<l:gentext key="appendix" text="Priedas"/>
+<l:gentext key="Article" text="Straipsnis"/>
+<l:gentext key="article" text="Straipsnis"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografija"/>
+<l:gentext key="bibliography" text="Bibliografija"/>
+<l:gentext key="Book" text="Knyga"/>
+<l:gentext key="book" text="Knyga"/>
+<l:gentext key="CAUTION" text="ATSARGIAI"/>
+<l:gentext key="Caution" text="Atsargiai"/>
+<l:gentext key="caution" text="Atsargiai"/>
+<l:gentext key="Chapter" text="Skyrius"/>
+<l:gentext key="chapter" text="Skyrius"/>
+<l:gentext key="Colophon" text="Knygos metrika"/>
+<l:gentext key="colophon" text="Knygos metrika"/>
+<l:gentext key="Copyright" text="Autorinės teisės"/>
+<l:gentext key="copyright" text="Autorinės teisės"/>
+<l:gentext key="Dedication" text="Dedikacija"/>
+<l:gentext key="dedication" text="Dedikacija"/>
+<l:gentext key="Edition" text="Leidimas"/>
+<l:gentext key="edition" text="Leidimas"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Lygtis"/>
+<l:gentext key="equation" text="Lygtis"/>
+<l:gentext key="Example" text="Pavyzdys"/>
+<l:gentext key="example" text="Pavyzdys"/>
+<l:gentext key="Figure" text="Pav."/>
+<l:gentext key="figure" text="Pav."/>
+<l:gentext key="Glossary" text="Terminų žodynas"/>
+<l:gentext key="glossary" text="Terminų žodynas"/>
+<l:gentext key="GlossSee" text="Žr."/>
+<l:gentext key="glosssee" text="Žr."/>
+<l:gentext key="GlossSeeAlso" text="Taip pat žr."/>
+<l:gentext key="glossseealso" text="Taip pat žr."/>
+<l:gentext key="IMPORTANT" text="SVARBU"/>
+<l:gentext key="important" text="Svarbu"/>
+<l:gentext key="Important" text="Svarbu"/>
+<l:gentext key="Index" text="Rodyklė"/>
+<l:gentext key="index" text="Rodyklė"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Teisinė pastaba"/>
+<l:gentext key="legalnotice" text="Teisinė pastaba"/>
+<l:gentext key="MsgAud" text="Auditorija"/>
+<l:gentext key="msgaud" text="Auditorija"/>
+<l:gentext key="MsgLevel" text="Lygmuo"/>
+<l:gentext key="msglevel" text="Lygmuo"/>
+<l:gentext key="MsgOrig" text="Kilmė"/>
+<l:gentext key="msgorig" text="Kilmė"/>
+<l:gentext key="NOTE" text="PASTABA"/>
+<l:gentext key="Note" text="Pastaba"/>
+<l:gentext key="note" text="Pastaba"/>
+<l:gentext key="Part" text="Dalis"/>
+<l:gentext key="part" text="Dalis"/>
+<l:gentext key="Preface" text="Įvadas"/>
+<l:gentext key="preface" text="Įvadas"/>
+<l:gentext key="Procedure" text="Procedūra"/>
+<l:gentext key="procedure" text="Procedūra"/>
+<l:gentext key="ProductionSet" text="Produkcija"/>
+<l:gentext key="PubDate" text="Išleidimo data"/>
+<l:gentext key="pubdate" text="Išleidimo data"/>
+<l:gentext key="Published" text="Išleistas"/>
+<l:gentext key="published" text="Išleistas"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Klaus. ir Ats."/>
+<l:gentext key="qandadiv" text="Klaus. ir Ats."/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Klaus.:"/>
+<l:gentext key="question" text="Klaus.:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Nuoroda"/>
+<l:gentext key="reference" text="Nuoroda"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Pavadinimas"/>
+<l:gentext key="refname" text="Pavadinimas"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Trumpa apžvalga"/>
+<l:gentext key="refsynopsisdiv" text="Trumpa apžvalga"/>
+<l:gentext key="RevHistory" text="Pataisymų istorija"/>
+<l:gentext key="revhistory" text="Pataisymų istorija"/>
+<l:gentext key="revision" text="Pataisytas leidimas"/>
+<l:gentext key="Revision" text="Pataisytas leidimas"/>
+<l:gentext key="sect1" text="Skyrius"/>
+<l:gentext key="sect2" text="Skyrius"/>
+<l:gentext key="sect3" text="Skyrius"/>
+<l:gentext key="sect4" text="Skyrius"/>
+<l:gentext key="sect5" text="Skyrius"/>
+<l:gentext key="section" text="Skyrius"/>
+<l:gentext key="Section" text="Skyrius"/>
+<l:gentext key="see" text="žr."/>
+<l:gentext key="See" text="Žr."/>
+<l:gentext key="seealso" text="taip pat žr."/>
+<l:gentext key="Seealso" text="Taip pat žr."/>
+<l:gentext key="SeeAlso" text="Taip pat žr."/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Set Index"/>
+<l:gentext key="SetIndex" text="Set Index"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="žingsnis"/>
+<l:gentext key="Step" text="Žingsnis"/>
+<l:gentext key="table" text="Lentelė"/>
+<l:gentext key="Table" text="Lentelė"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Patarimas"/>
+<l:gentext key="TIP" text="PATARIMAS"/>
+<l:gentext key="Tip" text="Patarimas"/>
+<l:gentext key="Warning" text="Įspėjimas"/>
+<l:gentext key="warning" text="Įspėjimas"/>
+<l:gentext key="WARNING" text="ĮSPĖJIMAS"/>
+<l:gentext key="and" text="ir"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Redaguotas"/>
+<l:gentext key="edited" text="Redaguotas"/>
+<l:gentext key="Editedby" text="Redagavo"/>
+<l:gentext key="editedby" text="Redagavo"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="neegzistuojantis elementas"/>
+<l:gentext key="notes" text="Pastabos"/>
+<l:gentext key="Notes" text="Pastabos"/>
+<l:gentext key="Pgs" text="P."/>
+<l:gentext key="pgs" text="P."/>
+<l:gentext key="Revisedby" text="Pataisė: "/>
+<l:gentext key="revisedby" text="Pataisė: "/>
+<l:gentext key="TableNotes" text="Pastabos"/>
+<l:gentext key="tablenotes" text="Pastabos"/>
+<l:gentext key="TableofContents" text="Turinys"/>
+<l:gentext key="tableofcontents" text="Turinys"/>
+<l:gentext key="unexpectedelementname" text="Nenumatyto elemento pavadinimas"/>
+<l:gentext key="unsupported" text="nepalaikomas"/>
+<l:gentext key="xrefto" text="xref į"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Lygčių sąrašas"/>
+<l:gentext key="ListofEquations" text="Lygčių sąrašas"/>
+<l:gentext key="ListofExamples" text="Pavyzdžių sąrašas"/>
+<l:gentext key="listofexamples" text="Pavyzdžių sąrašas"/>
+<l:gentext key="ListofFigures" text="Paveikslų sąrašas"/>
+<l:gentext key="listoffigures" text="Paveikslų sąrašas"/>
+<l:gentext key="ListofProcedures" text="Procedūrų sąrašas"/>
+<l:gentext key="listofprocedures" text="Procedūrų sąrašas"/>
+<l:gentext key="listoftables" text="Lentelių sąrašas"/>
+<l:gentext key="ListofTables" text="Lentelių sąrašas"/>
+<l:gentext key="ListofUnknown" text="Nežinomas sąrašas"/>
+<l:gentext key="listofunknown" text="Nežinomas sąrašas"/>
+<l:gentext key="nav-home" text="Į pradžią"/>
+<l:gentext key="nav-next" text="Sekantis"/>
+<l:gentext key="nav-next-sibling" text="Spartus pirmyn"/>
+<l:gentext key="nav-prev" text="Ankstesnis"/>
+<l:gentext key="nav-prev-sibling" text="Spartus atgal"/>
+<l:gentext key="nav-up" text="Aukštyn"/>
+<l:gentext key="nav-toc" text="Turinys"/>
+<l:gentext key="Draft" text="Planas"/>
+<l:gentext key="above" text="aukščiau"/>
+<l:gentext key="below" text="žemiau"/>
+<l:gentext key="sectioncalled" text="skyrius pavadinimu"/>
+<l:gentext key="index symbols" text="Simboliai"/>
+<l:gentext key="lowercase.alpha" text="aąbcčdeęėfghiįyjklmnoprsštuųūvzžqwx"/>
+<l:gentext key="uppercase.alpha" text="AĄBCČDEĘĖFGHIĮYJKLMNOPRSŠTUŲŪVZŽQWX"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Priedas %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Skyrius %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Lygtis %n. %t"/>
+<l:template name="example" text="Pavyzdys %n. %t"/>
+<l:template name="figure" text="Pav. %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Dalis %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedūra %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcija %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Lentelė %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Priedas %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Skyrius %n. %t"/>
+<l:template name="part" text="Dalis %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Klaus.: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Klaus.: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsection" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect1" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect2" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect3" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect1" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect2" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect3" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect4" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect5" text="skyrius pavadinimu „%t“"/>
+<l:template name="section" text="skyrius pavadinimu „%t“"/>
+<l:template name="simplesect" text="skyrius pavadinimu „%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Ats: %n"/>
+<l:template name="appendix" text="Priedas %n"/>
+<l:template name="bridgehead" text="Skyrius %n"/>
+<l:template name="chapter" text="Skyrius %n"/>
+<l:template name="equation" text="Lygtis %n"/>
+<l:template name="example" text="Pavyzdys %n"/>
+<l:template name="figure" text="Pav. %n"/>
+<l:template name="part" text="Dalis %n"/>
+<l:template name="procedure" text="Procedūra %n"/>
+<l:template name="productionset" text="Produkcija %n"/>
+<l:template name="qandadiv" text="Klaus. ir Ats. %n"/>
+<l:template name="qandaentry" text="Klaus.: %n"/>
+<l:template name="question" text="Klaus.: %n"/>
+<l:template name="sect1" text="Skyrius %n"/>
+<l:template name="sect2" text="Skyrius %n"/>
+<l:template name="sect3" text="Skyrius %n"/>
+<l:template name="sect4" text="Skyrius %n"/>
+<l:template name="sect5" text="Skyrius %n"/>
+<l:template name="section" text="Skyrius %n"/>
+<l:template name="table" text="Lentelė %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Priedas %n, %t"/>
+<l:template name="bridgehead" text="Skyrius %n, „%t“"/>
+<l:template name="chapter" text="Skyrius %n, %t"/>
+<l:template name="equation" text="Lygtis %n, „%t“"/>
+<l:template name="example" text="Pavyzdys %n, „%t“"/>
+<l:template name="figure" text="Pav. %n, „%t“"/>
+<l:template name="part" text="Dalis %n, „%t“"/>
+<l:template name="procedure" text="Procedūra %n, „%t“"/>
+<l:template name="productionset" text="Produkcija %n, „%t“"/>
+<l:template name="qandadiv" text="Klaus. ir Ats. %n, „%t“"/>
+<l:template name="refsect1" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect2" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsect3" text="skyrius pavadinimu „%t“"/>
+<l:template name="refsection" text="skyrius pavadinimu „%t“"/>
+<l:template name="sect1" text="Skyrius %n, „%t“"/>
+<l:template name="sect2" text="Skyrius %n, „%t“"/>
+<l:template name="sect3" text="Skyrius %n, „%t“"/>
+<l:template name="sect4" text="Skyrius %n, „%t“"/>
+<l:template name="sect5" text="Skyrius %n, „%t“"/>
+<l:template name="section" text="Skyrius %n, „%t“"/>
+<l:template name="simplesect" text="skyrius pavadinimu „%t“"/>
+<l:template name="table" text="Lentelė %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ir "/>
+<l:template name="seplast" text=", ir "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Žr. %t"/>
+<l:template name="seealso" text="Taip pat žr. %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Auditorija: "/>
+<l:template name="MsgLevel" text="Lygmuo: "/>
+<l:template name="MsgOrig" text="Kilmė: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="Y-m-d"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Sausis"/>
+<l:template name="February" text="Vasaris"/>
+<l:template name="March" text="Kovas"/>
+<l:template name="April" text="Balandis"/>
+<l:template name="May" text="Gegužė"/>
+<l:template name="June" text="Birželis"/>
+<l:template name="July" text="Liepa"/>
+<l:template name="August" text="Rugpjūtis"/>
+<l:template name="September" text="Rugsėjis"/>
+<l:template name="October" text="Spalis"/>
+<l:template name="November" text="Lapkritis"/>
+<l:template name="December" text="Gruodis"/>
+<l:template name="Monday" text="Pirmadienis"/>
+<l:template name="Tuesday" text="Antradienis"/>
+<l:template name="Wednesday" text="Trečiadienis"/>
+<l:template name="Thursday" text="Ketvirtadienis"/>
+<l:template name="Friday" text="Penktadienis"/>
+<l:template name="Saturday" text="Šeštadienis"/>
+<l:template name="Sunday" text="Sekmadienis"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Sau"/>
+<l:template name="Feb" text="Vas"/>
+<l:template name="Mar" text="Kov"/>
+<l:template name="Apr" text="Bal"/>
+<l:template name="May" text="Geg"/>
+<l:template name="Jun" text="Bir"/>
+<l:template name="Jul" text="Lie"/>
+<l:template name="Aug" text="Rugp"/>
+<l:template name="Sep" text="Rugs"/>
+<l:template name="Oct" text="Spa"/>
+<l:template name="Nov" text="Lap"/>
+<l:template name="Dec" text="Gru"/>
+<l:template name="Mon" text="Pr"/>
+<l:template name="Tue" text="An"/>
+<l:template name="Wed" text="Tr"/>
+<l:template name="Thu" text="Kt"/>
+<l:template name="Fri" text="Pn"/>
+<l:template name="Sat" text="Št"/>
+<l:template name="Sun" text="Sk"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0427 Lithuanian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Simboliai</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="1">Ą</l:l>
+<l:l i="1">ą</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="3">Č</l:l>
+<l:l i="3">č</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="5">Ę</l:l>
+<l:l i="5">ę</l:l>
+<l:l i="5">Ė</l:l>
+<l:l i="5">ė</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="9">Į</l:l>
+<l:l i="9">į</l:l>
+<l:l i="10">Y</l:l>
+<l:l i="10">y</l:l>
+<l:l i="11">J</l:l>
+<l:l i="11">j</l:l>
+<l:l i="12">K</l:l>
+<l:l i="12">k</l:l>
+<l:l i="13">L</l:l>
+<l:l i="13">l</l:l>
+<l:l i="14">M</l:l>
+<l:l i="14">m</l:l>
+<l:l i="15">N</l:l>
+<l:l i="15">n</l:l>
+<l:l i="16">O</l:l>
+<l:l i="16">o</l:l>
+<l:l i="17">P</l:l>
+<l:l i="17">p</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="19">Š</l:l>
+<l:l i="19">š</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="21">Ų</l:l>
+<l:l i="21">ų</l:l>
+<l:l i="21">Ū</l:l>
+<l:l i="21">ū</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">Z</l:l>
+<l:l i="23">z</l:l>
+<l:l i="23">Ž</l:l>
+<l:l i="23">ž</l:l>
+<l:l i="24">Q</l:l>
+<l:l i="24">q</l:l>
+<l:l i="25">W</l:l>
+<l:l i="25">w</l:l>
+<l:l i="26">X</l:l>
+<l:l i="26">x</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/lv.xml b/docs/xsl-generic/common/lv.xml
new file mode 100644
index 00000000..b1eb73a6
--- /dev/null
+++ b/docs/xsl-generic/common/lv.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="lv" english-language-name="Latvian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/lv.xml -->
+<!-- * -->
+<!-- * E-mail the edited lv.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Anotācija"/>
+<l:gentext key="abstract" text="anotācija"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="a:"/>
+<l:gentext key="Appendix" text="Pielikums"/>
+<l:gentext key="appendix" text="pielikums"/>
+<l:gentext key="Article" text="Raksts"/>
+<l:gentext key="article" text="raksts"/>
+<l:gentext key="Author" text="Autors"/>
+<l:gentext key="Bibliography" text="Bibliogrāfija"/>
+<l:gentext key="bibliography" text="bibliogrāfija"/>
+<l:gentext key="Book" text="Grāmata"/>
+<l:gentext key="book" text="grāmata"/>
+<l:gentext key="CAUTION" text="UZMANĪBU"/>
+<l:gentext key="Caution" text="Uzmanību"/>
+<l:gentext key="caution" text="uzmanību"/>
+<l:gentext key="Chapter" text="Nodaļa"/>
+<l:gentext key="chapter" text="nodaļa"/>
+<l:gentext key="Colophon" text="Pēcvārds"/>
+<l:gentext key="colophon" text="pēcvārds"/>
+<l:gentext key="Copyright" text="Autortiesības"/>
+<l:gentext key="copyright" text="autortiesības"/>
+<l:gentext key="Dedication" text="Veltījums"/>
+<l:gentext key="dedication" text="veltījums"/>
+<l:gentext key="Edition" text="Izdevums"/>
+<l:gentext key="edition" text="izdevums"/>
+<l:gentext key="Editor" text="Redaktors"/>
+<l:gentext key="Equation" text="Vienādojums"/>
+<l:gentext key="equation" text="vienādojums"/>
+<l:gentext key="Example" text="Piemērs"/>
+<l:gentext key="example" text="piemērs"/>
+<l:gentext key="Figure" text="Ilustrācija"/>
+<l:gentext key="figure" text="ilustrācija"/>
+<l:gentext key="Glossary" text="Glosārijs"/>
+<l:gentext key="glossary" text="glosārijs"/>
+<l:gentext key="GlossSee" text="Skatīties"/>
+<l:gentext key="glosssee" text="skatīties"/>
+<l:gentext key="GlossSeeAlso" text="Skatīt arī"/>
+<l:gentext key="glossseealso" text="skatīt arī"/>
+<l:gentext key="IMPORTANT" text="SVARĪGI"/>
+<l:gentext key="important" text="svarīgi"/>
+<l:gentext key="Important" text="svarīgs"/>
+<l:gentext key="Index" text="Indekss"/>
+<l:gentext key="index" text="indekss"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Autortiesības"/>
+<l:gentext key="legalnotice" text="autortiesības"/>
+<l:gentext key="MsgAud" text="Auditorija"/>
+<l:gentext key="msgaud" text="auditorija"/>
+<l:gentext key="MsgLevel" text="Ziņ.līmenis"/>
+<l:gentext key="msglevel" text="ziņ.līmenis"/>
+<l:gentext key="MsgOrig" text="Ziņ.izcelsme"/>
+<l:gentext key="msgorig" text="Ziņ.izcelsme"/>
+<l:gentext key="NOTE" text="PIEZĪME"/>
+<l:gentext key="Note" text="Piezīme"/>
+<l:gentext key="note" text="piezīme"/>
+<l:gentext key="Part" text="Daļa"/>
+<l:gentext key="part" text="daļa"/>
+<l:gentext key="Preface" text="Ievads"/>
+<l:gentext key="preface" text="ievads"/>
+<l:gentext key="Procedure" text="Procedūra"/>
+<l:gentext key="procedure" text="Procedūra"/>
+<l:gentext key="ProductionSet" text="Produkta"/>
+<l:gentext key="PubDate" text="Izdošanas datums"/>
+<l:gentext key="pubdate" text="Izdošanas datums"/>
+<l:gentext key="Published" text="Izdots"/>
+<l:gentext key="published" text="izdots"/>
+<l:gentext key="Publisher" text="Izdevējs"/>
+<l:gentext key="Qandadiv" text="J un A"/>
+<l:gentext key="qandadiv" text="J un A"/>
+<l:gentext key="QandASet" text="Bieži uzdotie jautājumi"/>
+<l:gentext key="Question" text="J:"/>
+<l:gentext key="question" text="J:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Atsauce"/>
+<l:gentext key="reference" text="atsauce"/>
+<l:gentext key="References" text="Norādes"/>
+<l:gentext key="RefName" text="Nosaukums"/>
+<l:gentext key="refname" text="nosaukums"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Sinopse"/>
+<l:gentext key="refsynopsisdiv" text="sinopse"/>
+<l:gentext key="RevHistory" text="Izmaiņu vēsture"/>
+<l:gentext key="revhistory" text="izmaiņu vēsture"/>
+<l:gentext key="revision" text="versija"/>
+<l:gentext key="Revision" text="Versija"/>
+<l:gentext key="sect1" text="Sadaļa"/>
+<l:gentext key="sect2" text="Sadaļa"/>
+<l:gentext key="sect3" text="Sadaļa"/>
+<l:gentext key="sect4" text="Sadaļa"/>
+<l:gentext key="sect5" text="Sadaļa"/>
+<l:gentext key="section" text="sadaļa"/>
+<l:gentext key="Section" text="Sadaļa"/>
+<l:gentext key="see" text="skatīt"/>
+<l:gentext key="See" text="Skatīt"/>
+<l:gentext key="seealso" text="skatīt arī"/>
+<l:gentext key="Seealso" text="skatīt arī"/>
+<l:gentext key="SeeAlso" text="Skatīt arī"/>
+<l:gentext key="set" text="Kolekcija"/>
+<l:gentext key="Set" text="Kolekcija"/>
+<l:gentext key="setindex" text="kolekcijas indekss"/>
+<l:gentext key="SetIndex" text="Kolekcijas indekss"/>
+<l:gentext key="Sidebar" text="Atkāpe"/>
+<l:gentext key="sidebar" text="atkāpe"/>
+<l:gentext key="step" text="solis"/>
+<l:gentext key="Step" text="Solis"/>
+<l:gentext key="table" text="Tabula"/>
+<l:gentext key="Table" text="Tabula"/>
+<l:gentext key="task" text="Uzdevums"/>
+<l:gentext key="Task" text="Uzdevums"/>
+<l:gentext key="tip" text="Ieteikums"/>
+<l:gentext key="TIP" text="IETEIKUMS"/>
+<l:gentext key="Tip" text="Ieteikums"/>
+<l:gentext key="Warning" text="Brīdinājums"/>
+<l:gentext key="warning" text="brīdinājums"/>
+<l:gentext key="WARNING" text="BRĪDINĀJUMS"/>
+<l:gentext key="and" text="un"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Rediģēts"/>
+<l:gentext key="edited" text="rediģēts"/>
+<l:gentext key="Editedby" text="Rediģējis"/>
+<l:gentext key="editedby" text="rediģējis"/>
+<l:gentext key="in" text="iekš"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="neeksistējošs elements"/>
+<l:gentext key="notes" text="piezīmes"/>
+<l:gentext key="Notes" text="Piezīmes"/>
+<l:gentext key="Pgs" text="Lpp."/>
+<l:gentext key="pgs" text="lpp."/>
+<l:gentext key="Revisedby" text="Pārskatījis: "/>
+<l:gentext key="revisedby" text="Pārskatījis: "/>
+<l:gentext key="TableNotes" text="Piezīmes"/>
+<l:gentext key="tablenotes" text="piezīmes"/>
+<l:gentext key="TableofContents" text="Saturs "/>
+<l:gentext key="tableofcontents" text="saturs"/>
+<l:gentext key="unexpectedelementname" text="Negaidīts elementa nosaukums"/>
+<l:gentext key="unsupported" text="neatbalstīts"/>
+<l:gentext key="xrefto" text="saite uz"/>
+<l:gentext key="Authors" text="Autori"/>
+<l:gentext key="copyeditor" text="Kopijas redaktors"/>
+<l:gentext key="graphicdesigner" text="Grafikas dizaineris"/>
+<l:gentext key="productioneditor" text="Produkta redaktors"/>
+<l:gentext key="technicaleditor" text="Tehniskais redaktors"/>
+<l:gentext key="translator" text="Tulks"/>
+<l:gentext key="listofequations" text="vienādojumu saraksts"/>
+<l:gentext key="ListofEquations" text="Vienādojumu saraksts"/>
+<l:gentext key="ListofExamples" text="Piemēru saraksts"/>
+<l:gentext key="listofexamples" text="piemēru saraksts"/>
+<l:gentext key="ListofFigures" text="Ilustrāciju saraksts"/>
+<l:gentext key="listoffigures" text="ilustrāciju saraksts"/>
+<l:gentext key="ListofProcedures" text="Procesu saraksts"/>
+<l:gentext key="listofprocedures" text="procesu saraksts"/>
+<l:gentext key="listoftables" text="tabulu saraksts"/>
+<l:gentext key="ListofTables" text="Tabulu saraksts"/>
+<l:gentext key="ListofUnknown" text="Nezināmo saraksts"/>
+<l:gentext key="listofunknown" text="Nezināmo saraksts"/>
+<l:gentext key="nav-home" text="Sākums"/>
+<l:gentext key="nav-next" text="Nākamais"/>
+<l:gentext key="nav-next-sibling" text="Ātri uz priekšu"/>
+<l:gentext key="nav-prev" text="Priekšskatījums"/>
+<l:gentext key="nav-prev-sibling" text="Ātri atpakaļ"/>
+<l:gentext key="nav-up" text="Uz augšu"/>
+<l:gentext key="nav-toc" text="Saturs"/>
+<l:gentext key="Draft" text="Uzmetums"/>
+<l:gentext key="above" text="virs"/>
+<l:gentext key="below" text="zem"/>
+<l:gentext key="sectioncalled" text="sadaļa ar nosaukumu"/>
+<l:gentext key="index symbols" text="Simboli"/>
+<l:gentext key="lowercase.alpha" text="aābcčdeēfgģhiījkķlļmnņoprsštuūvzž"/>
+<l:gentext key="uppercase.alpha" text="AĀBCČDEĒFGĢHIĪJKĶLĻMNŅOPRSŠTUŪVZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Pielikums %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Nodaļa %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Vienādojums %n. %t"/>
+<l:template name="example" text="Piemērs %n. %t"/>
+<l:template name="figure" text="Ilustrācija %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Daļa %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedūra %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkta %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabula %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Pielikums %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Nodaļa %n. %t"/>
+<l:template name="part" text="Daļa %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="J: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="J: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" (%o)"/>
+<l:template name="olink.page.citation" text=" (lpp. %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(lpp. %p)"/>
+<l:template name="docname" text=" ( %o)"/>
+<l:template name="docnamelong" text=" dokumentā ar nosaukumu %o"/>
+<l:template name="pageabbrev" text="(lpp. %p)"/>
+<l:template name="Page" text="Lappuse %p"/>
+<l:template name="bridgehead" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="refsection" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="refsect1" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="refsect2" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="refsect3" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="sect1" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="sect2" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="sect3" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="sect4" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="sect5" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="section" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="simplesect" text="sadaļa ar nosaukumu “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Pielikums %n"/>
+<l:template name="bridgehead" text="Sadaļa %n"/>
+<l:template name="chapter" text="Nodaļa %n"/>
+<l:template name="equation" text="Vienādojums %n"/>
+<l:template name="example" text="Piemērs %n"/>
+<l:template name="figure" text="Ilustrācija %n"/>
+<l:template name="part" text="Daļa %n"/>
+<l:template name="procedure" text="Procedūra %n"/>
+<l:template name="productionset" text="Produkta %n"/>
+<l:template name="qandadiv" text="J un A %n"/>
+<l:template name="qandaentry" text="J: %n"/>
+<l:template name="question" text="J: %n"/>
+<l:template name="sect1" text="Sadaļa %n"/>
+<l:template name="sect2" text="Sadaļa %n"/>
+<l:template name="sect3" text="Sadaļa %n"/>
+<l:template name="sect4" text="Sadaļa %n"/>
+<l:template name="sect5" text="Sadaļa %n"/>
+<l:template name="section" text="Sadaļa %n"/>
+<l:template name="table" text="Tabula %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Pielikums %n, %t"/>
+<l:template name="bridgehead" text="Sadaļa %n, “%t”"/>
+<l:template name="chapter" text="Nodaļa %n, %t"/>
+<l:template name="equation" text="Vienādojums %n, “%t”"/>
+<l:template name="example" text="Piemērs %n, “%t”"/>
+<l:template name="figure" text="Ilustrācija %n, “%t”"/>
+<l:template name="part" text="Daļa %n, “%t”"/>
+<l:template name="procedure" text="Procedūra %n, “%t”"/>
+<l:template name="productionset" text="Produkta %n, “%t”"/>
+<l:template name="qandadiv" text="J un A %n, “%t”"/>
+<l:template name="refsect1" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="refsect2" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="refsect3" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="refsection" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="sect1" text="Sadaļa %n, “%t”"/>
+<l:template name="sect2" text="Sadaļa %n, “%t”"/>
+<l:template name="sect3" text="Sadaļa %n, “%t”"/>
+<l:template name="sect4" text="Sadaļa %n, “%t”"/>
+<l:template name="sect5" text="Sadaļa %n, “%t”"/>
+<l:template name="section" text="Sadaļa %n, “%t”"/>
+<l:template name="simplesect" text="sadaļa ar nosaukumu “%t”"/>
+<l:template name="table" text="Tabula %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" un "/>
+<l:template name="seplast" text=", un "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Skatīties %t"/>
+<l:template name="seealso" text="Skatīt arī %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Auditorija: "/>
+<l:template name="MsgLevel" text="Ziņ.līmenis: "/>
+<l:template name="MsgOrig" text="Ziņ.izcelsme: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="Maijs"/>
+<l:template name="June" text="Jūnijs"/>
+<l:template name="July" text="Jūlijs"/>
+<l:template name="August" text="Augusts"/>
+<l:template name="September" text="Septembris"/>
+<l:template name="October" text="Octobris"/>
+<l:template name="November" text="Novembris"/>
+<l:template name="December" text="Decembris"/>
+<l:template name="Monday" text="Pirmdiena"/>
+<l:template name="Tuesday" text="Otrdiena"/>
+<l:template name="Wednesday" text="Trešdiena"/>
+<l:template name="Thursday" text="Ceturtdiena"/>
+<l:template name="Friday" text="Piektdiena"/>
+<l:template name="Saturday" text="Sestdiena"/>
+<l:template name="Sunday" text="Svētdiena"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Mai"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jūl"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Pr"/>
+<l:template name="Tue" text="Ot"/>
+<l:template name="Wed" text="Tr"/>
+<l:template name="Thu" text="Ce"/>
+<l:template name="Fri" text="Pk"/>
+<l:template name="Sat" text="Se"/>
+<l:template name="Sun" text="Sv"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0427 Latvian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", "/>
+<l:template name="alt.person.two.sep" text=" – "/>
+<l:template name="alt.person.last.sep" text=" – "/>
+<l:template name="alt.person.more.sep" text=" – "/>
+<l:template name="primary.editor" text=" (ed.)"/>
+<l:template name="primary.many" text=", et al."/>
+<l:template name="primary.sep" text=". "/>
+<l:template name="submaintitle.sep" text=": "/>
+<l:template name="title.sep" text=". "/>
+<l:template name="othertitle.sep" text=", "/>
+<l:template name="medium1" text=" ["/>
+<l:template name="medium2" text="]"/>
+<l:template name="secondary.person.sep" text="; "/>
+<l:template name="secondary.sep" text=". "/>
+<l:template name="respons.sep" text=". "/>
+<l:template name="edition.sep" text=". "/>
+<l:template name="edition.serial.sep" text=", "/>
+<l:template name="issuing.range" text="-"/>
+<l:template name="issuing.div" text=", "/>
+<l:template name="issuing.sep" text=". "/>
+<l:template name="partnr.sep" text=". "/>
+<l:template name="placepubl.sep" text=": "/>
+<l:template name="publyear.sep" text=", "/>
+<l:template name="pubinfo.sep" text=". "/>
+<l:template name="spec.pubinfo.sep" text=", "/>
+<l:template name="upd.sep" text=", "/>
+<l:template name="datecit1" text=" [cited "/>
+<l:template name="datecit2" text="]"/>
+<l:template name="extent.sep" text=". "/>
+<l:template name="locs.sep" text=", "/>
+<l:template name="location.sep" text=". "/>
+<l:template name="serie.sep" text=". "/>
+<l:template name="notice.sep" text=". "/>
+<l:template name="access" text="Pieejams "/>
+<l:template name="acctoo" text="Arī pieejams "/>
+<l:template name="onwww" text=" www"/>
+<l:template name="oninet" text="internetā"/>
+<l:template name="access.end" text=": "/>
+<l:template name="link1" text="&lt;"/>
+<l:template name="link2" text="&gt;"/>
+<l:template name="access.sep" text=". "/>
+<l:template name="isbn" text="ISBN "/>
+<l:template name="issn" text="ISSN "/>
+<l:template name="stdnum.sep" text=". "/>
+<l:template name="patcountry.sep" text=". "/>
+<l:template name="pattype.sep" text=", "/>
+<l:template name="patnum.sep" text=". "/>
+<l:template name="patdate.sep" text=". "/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/mn.xml b/docs/xsl-generic/common/mn.xml
new file mode 100644
index 00000000..ce24b213
--- /dev/null
+++ b/docs/xsl-generic/common/mn.xml
@@ -0,0 +1,724 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="mn" english-language-name="Mongolian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/mn.xml -->
+<!-- * -->
+<!-- * E-mail the edited mn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Товч агуулга"/>
+<l:gentext key="abstract" text="товч агуулга"/>
+<l:gentext key="Answer" text="Х:"/>
+<l:gentext key="answer" text="Х:"/>
+<l:gentext key="Appendix" text="Хавсралт"/>
+<l:gentext key="appendix" text="хавсралт"/>
+<l:gentext key="Article" text="Өгүүлэл"/>
+<l:gentext key="article" text="өгүүлэл"/>
+<l:gentext key="Author" text="Зохиогч"/>
+<l:gentext key="Bibliography" text="Ном зүй"/>
+<l:gentext key="bibliography" text="ном зүй"/>
+<l:gentext key="Book" text="Ном"/>
+<l:gentext key="book" text="ном"/>
+<l:gentext key="CAUTION" text="АНХААРУУЛГА"/>
+<l:gentext key="Caution" text="Анхааруулга"/>
+<l:gentext key="caution" text="анхааруулга"/>
+<l:gentext key="Chapter" text="Бүлэг"/>
+<l:gentext key="chapter" text="бүлэг"/>
+<l:gentext key="Colophon" text="Сүүл тайлбар"/>
+<l:gentext key="colophon" text="сүүл тайлбар"/>
+<l:gentext key="Copyright" text="Зохиогчийн эрх"/>
+<l:gentext key="copyright" text="зохиогчийн эрх"/>
+<l:gentext key="Dedication" text="Зохиогчийн үг"/>
+<l:gentext key="dedication" text="зохиогчийн үг"/>
+<l:gentext key="Edition" text="Хэвлэл"/>
+<l:gentext key="edition" text="хэвлэл"/>
+<l:gentext key="Editor" text="Хянан тохиолдуулагч"/>
+<l:gentext key="Equation" text="Тэгшитгэл"/>
+<l:gentext key="equation" text="тэгшитгэл"/>
+<l:gentext key="Example" text="Жишээ"/>
+<l:gentext key="example" text="жишээ"/>
+<l:gentext key="Figure" text="Зураг"/>
+<l:gentext key="figure" text="зураг"/>
+<l:gentext key="Glossary" text="Нэр томъёо"/>
+<l:gentext key="glossary" text="нэр томъёо"/>
+<l:gentext key="GlossSee" text="харна уу"/>
+<l:gentext key="glosssee" text="харна уу"/>
+<l:gentext key="GlossSeeAlso" text="Бас харна уу"/>
+<l:gentext key="glossseealso" text="бас харна уу"/>
+<l:gentext key="IMPORTANT" text="ЧУХАЛ"/>
+<l:gentext key="important" text="чухал"/>
+<l:gentext key="Important" text="Чухал"/>
+<l:gentext key="Index" text="Үгийн жагсаалт"/>
+<l:gentext key="index" text="үгийн жагсаалт"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Хуулийн заалт"/>
+<l:gentext key="legalnotice" text="хуулийн заалт"/>
+<l:gentext key="MsgAud" text="Зориулалт"/>
+<l:gentext key="msgaud" text="зориулалт"/>
+<l:gentext key="MsgLevel" text="Түвшин"/>
+<l:gentext key="msglevel" text="түвшин"/>
+<l:gentext key="MsgOrig" text="Үүсэл"/>
+<l:gentext key="msgorig" text="үүсэл"/>
+<l:gentext key="NOTE" text="ТЭМДЭГЛЭЛ"/>
+<l:gentext key="Note" text="Тэмдэглэл"/>
+<l:gentext key="note" text="тэмдэглэл"/>
+<l:gentext key="Part" text="хэсэг"/>
+<l:gentext key="part" text="Хэсэг"/>
+<l:gentext key="Preface" text="Өмнөх үг"/>
+<l:gentext key="preface" text="өмнөх үг"/>
+<l:gentext key="Procedure" text="Гүйцэтгэл"/>
+<l:gentext key="procedure" text="гүйцэтгэл"/>
+<l:gentext key="ProductionSet" text="Бүтээгдэхүүн"/>
+<l:gentext key="PubDate" text="Хэвлэгдсэн огноо"/>
+<l:gentext key="pubdate" text="хэвлэгдсэн огноо"/>
+<l:gentext key="Published" text="Хэвлэгдсэн"/>
+<l:gentext key="published" text="хэвлэгдсэн"/>
+<l:gentext key="Publisher" text="Хэвлэсэн компани"/>
+<l:gentext key="Qandadiv" text="А ба Х"/>
+<l:gentext key="qandadiv" text="А ба Х"/>
+<l:gentext key="QandASet" text="Түгээмэл тавигддаг асуултууд"/>
+<l:gentext key="Question" text="А:"/>
+<l:gentext key="question" text="А:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Ашигласан ном"/>
+<l:gentext key="reference" text="ашигласан ном"/>
+<l:gentext key="References" text="Ашигласан номнууд"/>
+<l:gentext key="RefName" text="Нэр"/>
+<l:gentext key="refname" text="нэр"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Ерөнхий агуулга"/>
+<l:gentext key="refsynopsisdiv" text="ерөнхий агуулга"/>
+<l:gentext key="RevHistory" text="Залруулалтын түүх"/>
+<l:gentext key="revhistory" text="залруулалтын түүх"/>
+<l:gentext key="revision" text="залруулалт"/>
+<l:gentext key="Revision" text="Залруулалт"/>
+<l:gentext key="sect1" text="Хэсэг"/>
+<l:gentext key="sect2" text="Хэсэг"/>
+<l:gentext key="sect3" text="Хэсэг"/>
+<l:gentext key="sect4" text="Хэсэг"/>
+<l:gentext key="sect5" text="Хэсэг"/>
+<l:gentext key="section" text="Хэсэг"/>
+<l:gentext key="Section" text="Хэсэг"/>
+<l:gentext key="see" text="Харна уу"/>
+<l:gentext key="See" text="харна уу"/>
+<l:gentext key="seealso" text="бас харна уу"/>
+<l:gentext key="Seealso" text="Бас харна уу"/>
+<l:gentext key="SeeAlso" text="Бас харна уу"/>
+<l:gentext key="set" text="цуглуулга"/>
+<l:gentext key="Set" text="Цуглуулга"/>
+<l:gentext key="setindex" text="цуглуулгын жагсаалт"/>
+<l:gentext key="SetIndex" text="Цуглуулгын жагсаалт"/>
+<l:gentext key="Sidebar" text="Хажуу самбар"/>
+<l:gentext key="sidebar" text="хажуу самбар"/>
+<l:gentext key="step" text="алхам"/>
+<l:gentext key="Step" text="Алхам"/>
+<l:gentext key="table" text="хүснэгт"/>
+<l:gentext key="Table" text="Хүснэгт"/>
+<l:gentext key="task" text="даалгавар"/>
+<l:gentext key="Task" text="Даалгавар"/>
+<l:gentext key="tip" text="зөвлөгөө"/>
+<l:gentext key="TIP" text="ЗӨВЛӨГӨӨ"/>
+<l:gentext key="Tip" text="Зөвлөгөө"/>
+<l:gentext key="Warning" text="Сануулга"/>
+<l:gentext key="warning" text="сануулга"/>
+<l:gentext key="WARNING" text="САНУУЛГА"/>
+<l:gentext key="and" text="ба"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Хянасан"/>
+<l:gentext key="edited" text="хянасан"/>
+<l:gentext key="Editedby" text="Хянан тохиолдуулсан"/>
+<l:gentext key="editedby" text="хянан тохиолдуулсан"/>
+<l:gentext key="in" text="дотор"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="байхгүй элемент"/>
+<l:gentext key="notes" text="тайлбар"/>
+<l:gentext key="Notes" text="Тайлбар"/>
+<l:gentext key="Pgs" text="Хуудас"/>
+<l:gentext key="pgs" text="хуудас"/>
+<l:gentext key="Revisedby" text="Залруулсан: "/>
+<l:gentext key="revisedby" text="залруулсан: "/>
+<l:gentext key="TableNotes" text="Тайлбар"/>
+<l:gentext key="tablenotes" text="тайлбар"/>
+<l:gentext key="TableofContents" text="Гарчиг"/>
+<l:gentext key="tableofcontents" text="гарчиг"/>
+<l:gentext key="unexpectedelementname" text="Санамсаргүй элемент"/>
+<l:gentext key="unsupported" text="дэмжигдээгүй"/>
+<l:gentext key="xrefto" text="xref руу"/>
+<l:gentext key="Authors" text="Зохиогчид"/>
+<l:gentext key="copyeditor" text="Хуулбар хянан тохиолдуулагч"/>
+<l:gentext key="graphicdesigner" text="График дизайнч"/>
+<l:gentext key="productioneditor" text="Бүтээгдэхүүн хянан тохиолдуулагч"/>
+<l:gentext key="technicaleditor" text="Техникийн хянан тохиолдуулагч"/>
+<l:gentext key="translator" text="Орчуулагч"/>
+<l:gentext key="listofequations" text="тэгшитгэлийн жагсаалт"/>
+<l:gentext key="ListofEquations" text="Тэгшитгэлийн жагсаалт"/>
+<l:gentext key="ListofExamples" text="Жишээний жагсаалт"/>
+<l:gentext key="listofexamples" text="жишээний жагсаалт"/>
+<l:gentext key="ListofFigures" text="Зургийн жагсаалт"/>
+<l:gentext key="listoffigures" text="зургийн жагсаалт"/>
+<l:gentext key="ListofProcedures" text="Гүйцэтгэлийн жагсаалт"/>
+<l:gentext key="listofprocedures" text="гүйцэтгэлийн жагсаалт"/>
+<l:gentext key="listoftables" text="хүснэгтийн жагсаалт"/>
+<l:gentext key="ListofTables" text="Хүснэгтийн жагсаалт"/>
+<l:gentext key="ListofUnknown" text="Тодорхойгүй жагсаалт"/>
+<l:gentext key="listofunknown" text="тодорхойгүй жагсаалт"/>
+<l:gentext key="nav-home" text="Эхлэл"/>
+<l:gentext key="nav-next" text="Дараах"/>
+<l:gentext key="nav-next-sibling" text="Дараах"/>
+<l:gentext key="nav-prev" text="Өмнөх"/>
+<l:gentext key="nav-prev-sibling" text="Өмнөх"/>
+<l:gentext key="nav-up" text="Дээш"/>
+<l:gentext key="nav-toc" text="Гарчиг"/>
+<l:gentext key="Draft" text="Ноорог"/>
+<l:gentext key="above" text="дээр"/>
+<l:gentext key="below" text="доор"/>
+<l:gentext key="sectioncalled" text="Хэсгийн нэр"/>
+<l:gentext key="index symbols" text="тэмдэгтүүд"/>
+<l:gentext key="lowercase.alpha" text="абвгдеёжзийклмноөпрстуүфхцчшщъыьэюя"/>
+<l:gentext key="uppercase.alpha" text="АБВГДЕЁЖЗИЙКЛМНОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="«"/>
+<l:dingbat key="endquote" text="»"/>
+<l:dingbat key="nestedstartquote" text="„"/>
+<l:dingbat key="nestedendquote" text="“"/>
+<l:dingbat key="singlestartquote" text="‚"/>
+<l:dingbat key="singleendquote" text="‘"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="3"/>
+<l:context name="styles"><l:template name="person-name" text="овог-нэр"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Хавсралт %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Бүлэг %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Тэгшитгэл %n. %t"/>
+<l:template name="example" text="Жишээ %n. %t"/>
+<l:template name="figure" text="Зураг %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="хэсэг %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Гүйцэтгэл %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Бүтээгдэхүүн %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="А: %n"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Хүснэгт %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Хавсралт %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Бүлэг %n. %t"/>
+<l:template name="part" text="хэсэг %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="А: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="А: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" %o "/>
+<l:template name="olink.page.citation" text=" (хуудас %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(Хуудас %p)"/>
+<l:template name="docname" text=" %o "/>
+<l:template name="docnamelong" text=" %o гарчигтай баримтад"/>
+<l:template name="pageabbrev" text="(Х. %p)"/>
+<l:template name="Page" text="Хуудас %p"/>
+<l:template name="bridgehead" text="«%t»"/>
+<l:template name="refsection" text="«%t»"/>
+<l:template name="refsect1" text="«%t»"/>
+<l:template name="refsect2" text="«%t»"/>
+<l:template name="refsect3" text="«%t»"/>
+<l:template name="sect1" text="«%t»"/>
+<l:template name="sect2" text="«%t»"/>
+<l:template name="sect3" text="«%t»"/>
+<l:template name="sect4" text="«%t»"/>
+<l:template name="sect5" text="«%t»"/>
+<l:template name="section" text="«%t»"/>
+<l:template name="simplesect" text="«%t»"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Х: %n"/>
+<l:template name="appendix" text="Хавсралт %n"/>
+<l:template name="bridgehead" text="Хэсэг %n"/>
+<l:template name="chapter" text="Бүлэг %n"/>
+<l:template name="equation" text="Тэгшитгэл %n"/>
+<l:template name="example" text="Жишээ %n"/>
+<l:template name="figure" text="Зураг %n"/>
+<l:template name="part" text="хэсэг %n"/>
+<l:template name="procedure" text="Гүйцэтгэл %n"/>
+<l:template name="productionset" text="Бүтээгдэхүүн %n"/>
+<l:template name="qandadiv" text="А ба Х %n"/>
+<l:template name="qandaentry" text="А: %n"/>
+<l:template name="question" text="А: %n"/>
+<l:template name="sect1" text="Хэсэг %n"/>
+<l:template name="sect2" text="Хэсэг %n"/>
+<l:template name="sect3" text="Хэсэг %n"/>
+<l:template name="sect4" text="Хэсэг %n"/>
+<l:template name="sect5" text="Хэсэг %n"/>
+<l:template name="section" text="Хэсэг %n"/>
+<l:template name="table" text="Хүснэгт %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Хавсралт %n, %t"/>
+<l:template name="bridgehead" text="Хэсэг %n, «%t»"/>
+<l:template name="chapter" text="Бүлэг %n, %t"/>
+<l:template name="equation" text="Тэгшитгэл %n, «%t»"/>
+<l:template name="example" text="Жишээ %n, «%t»"/>
+<l:template name="figure" text="Зураг %n, «%t»"/>
+<l:template name="part" text="хэсэг %n, «%t»"/>
+<l:template name="procedure" text="Гүйцэтгэл %n, «%t»"/>
+<l:template name="productionset" text="Бүтээгдэхүүн %n, «%t»"/>
+<l:template name="qandadiv" text="А ба Х %n, «%t»"/>
+<l:template name="refsect1" text="Хэсгийн нэр «%t»"/>
+<l:template name="refsect2" text="Хэсгийн нэр «%t»"/>
+<l:template name="refsect3" text="Хэсгийн нэр «%t»"/>
+<l:template name="refsection" text="Хэсгийн нэр «%t»"/>
+<l:template name="sect1" text="Хэсэг %n, «%t»"/>
+<l:template name="sect2" text="Хэсэг %n, «%t»"/>
+<l:template name="sect3" text="Хэсэг %n, «%t»"/>
+<l:template name="sect4" text="Хэсэг %n, «%t»"/>
+<l:template name="sect5" text="Хэсэг %n, «%t»"/>
+<l:template name="section" text="Хэсэг %n, «%t»"/>
+<l:template name="simplesect" text="Хэсгийн нэр «%t»"/>
+<l:template name="table" text="Хүснэгт %n, «%t»"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ба "/>
+<l:template name="seplast" text=", ба "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="харна уу %t"/>
+<l:template name="seealso" text="Бас харна уу %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Зориулалт: "/>
+<l:template name="MsgLevel" text="Түвшин: "/>
+<l:template name="MsgOrig" text="Үүсэл: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="Y/m/d"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Тодорхойлолт: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Хулгана сарын"/>
+<l:template name="February" text="Үхэр сарын"/>
+<l:template name="March" text="Бар сарын"/>
+<l:template name="April" text="Туулай сарын"/>
+<l:template name="May" text="Луу сарын"/>
+<l:template name="June" text="Могой сарын"/>
+<l:template name="July" text="Морь сарын"/>
+<l:template name="August" text="Хонь сарын"/>
+<l:template name="September" text="Бич сарын"/>
+<l:template name="October" text="Тахиа сарын"/>
+<l:template name="November" text="Нохой сарын"/>
+<l:template name="December" text="Гахай сарын"/>
+<l:template name="Monday" text="Даваа"/>
+<l:template name="Tuesday" text="Мягмар"/>
+<l:template name="Wednesday" text="Лхагва"/>
+<l:template name="Thursday" text="Пүрэв"/>
+<l:template name="Friday" text="Баасан"/>
+<l:template name="Saturday" text="Бямба"/>
+<l:template name="Sunday" text="Ням"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Хул"/>
+<l:template name="Feb" text="Үхэ"/>
+<l:template name="Mar" text="Бар"/>
+<l:template name="Apr" text="Туу"/>
+<l:template name="May" text="Луу"/>
+<l:template name="Jun" text="Мог"/>
+<l:template name="Jul" text="Мор"/>
+<l:template name="Aug" text="Хон"/>
+<l:template name="Sep" text="Бич"/>
+<l:template name="Oct" text="Тах"/>
+<l:template name="Nov" text="Нох"/>
+<l:template name="Dec" text="Гах"/>
+<l:template name="Mon" text="Да"/>
+<l:template name="Tue" text="Мя"/>
+<l:template name="Wed" text="Лх"/>
+<l:template name="Thu" text="Пү"/>
+<l:template name="Fri" text="Ба"/>
+<l:template name="Sat" text="Бя"/>
+<l:template name="Sun" text="Ня"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0450 Mongolian (MONGOLIA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", "/>
+<l:template name="number-separator" text=", "/>
+<l:template name="range-separator" text="-"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Тэмдэгтүүд</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="270">А</l:l>
+<l:l i="270">а</l:l>
+<l:l i="280">Б</l:l>
+<l:l i="280">б</l:l>
+<l:l i="290">В</l:l>
+<l:l i="290">в</l:l>
+<l:l i="300">Г</l:l>
+<l:l i="300">г</l:l>
+<l:l i="310">Д</l:l>
+<l:l i="310">д</l:l>
+<l:l i="320">Е</l:l>
+<l:l i="320">е</l:l>
+<l:l i="330">Ё</l:l>
+<l:l i="330">ё</l:l>
+<l:l i="340">Ж</l:l>
+<l:l i="340">ж</l:l>
+<l:l i="350">З</l:l>
+<l:l i="350">з</l:l>
+<l:l i="360">И</l:l>
+<l:l i="360">и</l:l>
+<l:l i="370">Й</l:l>
+<l:l i="370">й</l:l>
+<l:l i="380">К</l:l>
+<l:l i="380">к</l:l>
+<l:l i="390">Л</l:l>
+<l:l i="390">л</l:l>
+<l:l i="400">М</l:l>
+<l:l i="400">м</l:l>
+<l:l i="410">Н</l:l>
+<l:l i="410">н</l:l>
+<l:l i="420">О</l:l>
+<l:l i="420">о</l:l>
+<l:l i="430">Ө</l:l>
+<l:l i="430">ө</l:l>
+<l:l i="440">П</l:l>
+<l:l i="440">п</l:l>
+<l:l i="450">Р</l:l>
+<l:l i="450">р</l:l>
+<l:l i="460">С</l:l>
+<l:l i="460">с</l:l>
+<l:l i="470">Т</l:l>
+<l:l i="470">т</l:l>
+<l:l i="480">У</l:l>
+<l:l i="480">у</l:l>
+<l:l i="490">Ү</l:l>
+<l:l i="490">ү</l:l>
+<l:l i="500">Ф</l:l>
+<l:l i="500">ф</l:l>
+<l:l i="510">Х</l:l>
+<l:l i="510">х</l:l>
+<l:l i="520">Ц</l:l>
+<l:l i="520">ц</l:l>
+<l:l i="530">Ч</l:l>
+<l:l i="530">ч</l:l>
+<l:l i="540">Ш</l:l>
+<l:l i="540">ш</l:l>
+<l:l i="550">Щ</l:l>
+<l:l i="550">щ</l:l>
+<l:l i="560">Ъ</l:l>
+<l:l i="560">ъ</l:l>
+<l:l i="570">Ы</l:l>
+<l:l i="570">ы</l:l>
+<l:l i="580">Ь</l:l>
+<l:l i="580">ь</l:l>
+<l:l i="590">Э</l:l>
+<l:l i="590">э</l:l>
+<l:l i="600">Ю</l:l>
+<l:l i="600">ю</l:l>
+<l:l i="610">Я</l:l>
+<l:l i="610">я</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/nl.xml b/docs/xsl-generic/common/nl.xml
new file mode 100644
index 00000000..41b69ed6
--- /dev/null
+++ b/docs/xsl-generic/common/nl.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nl" english-language-name="Dutch">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/nl.xml -->
+<!-- * -->
+<!-- * E-mail the edited nl.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Samenvatting"/>
+<l:gentext key="abstract" text="Samenvatting"/>
+<l:gentext key="Answer" text="Antwoord:"/>
+<l:gentext key="answer" text="Antwoord:"/>
+<l:gentext key="Appendix" text="Bijlage"/>
+<l:gentext key="appendix" text="Bijlage"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="Artikel"/>
+<l:gentext key="Author" text="Auteur"/>
+<l:gentext key="Bibliography" text="Literatuurlijst"/>
+<l:gentext key="bibliography" text="Literatuurlijst"/>
+<l:gentext key="Book" text="Boek"/>
+<l:gentext key="book" text="Boek"/>
+<l:gentext key="CAUTION" text="LET OP"/>
+<l:gentext key="Caution" text="Let op"/>
+<l:gentext key="caution" text="Let op"/>
+<l:gentext key="Chapter" text="Hoofdstuk"/>
+<l:gentext key="chapter" text="hoofdstuk"/>
+<l:gentext key="Colophon" text="Colofon"/>
+<l:gentext key="colophon" text="Colofon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Opdracht"/>
+<l:gentext key="dedication" text="Opdracht"/>
+<l:gentext key="Edition" text="Uitgave"/>
+<l:gentext key="edition" text="Uitgave"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<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="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Uitgegeven"/>
+<l:gentext key="published" text="Uitgegeven"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Vraag en Antwoord"/>
+<l:gentext key="qandadiv" text="Vraag en Antwoord"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Vraag:"/>
+<l:gentext key="question" text="Vraag:"/>
+<l:gentext key="RefEntry" text="Referentielemma"/>
+<l:gentext key="refentry" text="Referentielemma"/>
+<l:gentext key="Reference" text="Referentie"/>
+<l:gentext key="reference" text="Referentie"/>
+<l:gentext key="References" text="References" lang="en"/>
+<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="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="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="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="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="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<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="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Ontwerp"/>
+<l:gentext key="above" text="boven"/>
+<l:gentext key="below" text="onder"/>
+<l:gentext key="sectioncalled" text="de paragraaf"/>
+<l:gentext key="index symbols" text="Symbolen"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzëïé"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZËÏÉ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Bijlage %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Hoofdstuk %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Vergelijking %n. %t"/>
+<l:template name="example" text="Voorbeeld %n. %t"/>
+<l:template name="figure" text="Figuur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedure %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Bijlage %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Hoofdstuk %n. %t"/>
+<l:template name="part" text="Deel %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Vraag: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Vraag: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="de paragraaf “%t”"/>
+<l:template name="refsection" text="de paragraaf “%t”"/>
+<l:template name="refsect1" text="de paragraaf “%t”"/>
+<l:template name="refsect2" text="de paragraaf “%t”"/>
+<l:template name="refsect3" text="de paragraaf “%t”"/>
+<l:template name="sect1" text="de paragraaf “%t”"/>
+<l:template name="sect2" text="de paragraaf “%t”"/>
+<l:template name="sect3" text="de paragraaf “%t”"/>
+<l:template name="sect4" text="de paragraaf “%t”"/>
+<l:template name="sect5" text="de paragraaf “%t”"/>
+<l:template name="section" text="de paragraaf “%t”"/>
+<l:template name="simplesect" text="de paragraaf “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Antwoord: %n"/>
+<l:template name="appendix" text="Bijlage %n"/>
+<l:template name="bridgehead" text="Paragraaf %n"/>
+<l:template name="chapter" text="Hoofdstuk %n"/>
+<l:template name="equation" text="Vergelijking %n"/>
+<l:template name="example" text="Voorbeeld %n"/>
+<l:template name="figure" text="Figuur %n"/>
+<l:template name="part" text="Deel %n"/>
+<l:template name="procedure" text="Procedure %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Vraag en Antwoord %n"/>
+<l:template name="qandaentry" text="Vraag: %n"/>
+<l:template name="question" text="Vraag: %n"/>
+<l:template name="sect1" text="Paragraaf %n"/>
+<l:template name="sect2" text="Paragraaf %n"/>
+<l:template name="sect3" text="Paragraaf %n"/>
+<l:template name="sect4" text="Paragraaf %n"/>
+<l:template name="sect5" text="Paragraaf %n"/>
+<l:template name="section" text="Paragraaf %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Bijlage %n, %t"/>
+<l:template name="bridgehead" text="Paragraaf %n, “%t”"/>
+<l:template name="chapter" text="Hoofdstuk %n, %t"/>
+<l:template name="equation" text="Vergelijking %n, “%t”"/>
+<l:template name="example" text="Voorbeeld %n, “%t”"/>
+<l:template name="figure" text="Figuur %n, “%t”"/>
+<l:template name="part" text="Deel %n, “%t”"/>
+<l:template name="procedure" text="Procedure %n, “%t”"/>
+<l:template name="productionset" text="Production %n, “%t”"/>
+<l:template name="qandadiv" text="Vraag en Antwoord %n, “%t”"/>
+<l:template name="refsect1" text="de paragraaf “%t”"/>
+<l:template name="refsect2" text="de paragraaf “%t”"/>
+<l:template name="refsect3" text="de paragraaf “%t”"/>
+<l:template name="refsection" text="de paragraaf “%t”"/>
+<l:template name="sect1" text="Paragraaf %n, “%t”"/>
+<l:template name="sect2" text="Paragraaf %n, “%t”"/>
+<l:template name="sect3" text="Paragraaf %n, “%t”"/>
+<l:template name="sect4" text="Paragraaf %n, “%t”"/>
+<l:template name="sect5" text="Paragraaf %n, “%t”"/>
+<l:template name="section" text="Paragraaf %n, “%t”"/>
+<l:template name="simplesect" text="de paragraaf “%t”"/>
+<l:template name="table" text="Tabel %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" en "/>
+<l:template name="seplast" text=", en "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Zie %t"/>
+<l:template name="seealso" text="Zie ook %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Doelgroep: "/>
+<l:template name="MsgLevel" text="Niveau: "/>
+<l:template name="MsgOrig" text="Herkomst: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0413 Dutch"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/nn.xml b/docs/xsl-generic/common/nn.xml
new file mode 100644
index 00000000..fa1db047
--- /dev/null
+++ b/docs/xsl-generic/common/nn.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nn" english-language-name="Nynorsk">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/nn.xml -->
+<!-- * -->
+<!-- * E-mail the edited nn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Samandrag"/>
+<l:gentext key="abstract" text="Samandrag"/>
+<l:gentext key="Answer" text="Svar"/>
+<l:gentext key="answer" text="svar"/>
+<l:gentext key="Appendix" text="Tillegg"/>
+<l:gentext key="appendix" text="tillegg"/>
+<l:gentext key="Article" text="Artikkel"/>
+<l:gentext key="article" text="artikkel"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografi"/>
+<l:gentext key="bibliography" text="bibliografi"/>
+<l:gentext key="Book" text="Bok"/>
+<l:gentext key="book" text="bok"/>
+<l:gentext key="CAUTION" text="OBS"/>
+<l:gentext key="Caution" text="Obs"/>
+<l:gentext key="caution" text="OBS"/>
+<l:gentext key="Chapter" text="Kapittel"/>
+<l:gentext key="chapter" text="kapittel"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Opphavsrett"/>
+<l:gentext key="copyright" text="opphavsrett"/>
+<l:gentext key="Dedication" text="Dedikasjon"/>
+<l:gentext key="dedication" text="dedikasjon"/>
+<l:gentext key="Edition" text="Utgåve"/>
+<l:gentext key="edition" text="utgåve"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Formel"/>
+<l:gentext key="equation" text="formel"/>
+<l:gentext key="Example" text="Døme"/>
+<l:gentext key="example" text="døme"/>
+<l:gentext key="Figure" text="Figur"/>
+<l:gentext key="figure" text="figur"/>
+<l:gentext key="Glossary" text="Ordliste"/>
+<l:gentext key="glossary" text="ordliste"/>
+<l:gentext key="GlossSee" text="Sjå"/>
+<l:gentext key="glosssee" text="sjå"/>
+<l:gentext key="GlossSeeAlso" text="Sjå òg"/>
+<l:gentext key="glossseealso" text="sjå òg"/>
+<l:gentext key="IMPORTANT" text="VIKTIG"/>
+<l:gentext key="important" text="viktig"/>
+<l:gentext key="Important" text="Viktig"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text=""/>
+<l:gentext key="legalnotice" text=""/>
+<l:gentext key="MsgAud" text="Publikum"/>
+<l:gentext key="msgaud" text="publikum"/>
+<l:gentext key="MsgLevel" text="Nivå"/>
+<l:gentext key="msglevel" text="nivå"/>
+<l:gentext key="MsgOrig" text="Opphav"/>
+<l:gentext key="msgorig" text="Opphav"/>
+<l:gentext key="NOTE" text="NOTAT"/>
+<l:gentext key="Note" text="Notat"/>
+<l:gentext key="note" text="NOTAT"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="del"/>
+<l:gentext key="Preface" text="Forord"/>
+<l:gentext key="preface" text="forord"/>
+<l:gentext key="Procedure" text="Prosedyre"/>
+<l:gentext key="procedure" text="prosedyre"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Utgitt"/>
+<l:gentext key="published" text="utgitt"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Spørsmål og Svar"/>
+<l:gentext key="qandadiv" text="Spørsmål og Svar"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Spørsmål"/>
+<l:gentext key="question" text="spørsmål"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referanse"/>
+<l:gentext key="reference" text="referanse"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Namn"/>
+<l:gentext key="refname" text="namn"/>
+<l:gentext key="RefSection" text="Del"/>
+<l:gentext key="refsection" text="del"/>
+<l:gentext key="RefSynopsisDiv" text="Oversyn"/>
+<l:gentext key="refsynopsisdiv" text="oversyn"/>
+<l:gentext key="RevHistory" text="Revisjonshistorie"/>
+<l:gentext key="revhistory" text="revisjonshistorie"/>
+<l:gentext key="revision" text="revisjon"/>
+<l:gentext key="Revision" text="Revisjon"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="del"/>
+<l:gentext key="Section" text="Del"/>
+<l:gentext key="see" text="sjå"/>
+<l:gentext key="See" text="Sjå"/>
+<l:gentext key="seealso" text="sjå òg"/>
+<l:gentext key="Seealso" text="Sjå òg"/>
+<l:gentext key="SeeAlso" text="Sjå òg"/>
+<l:gentext key="set" text="set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Indeks"/>
+<l:gentext key="SetIndex" text="Indeks"/>
+<l:gentext key="Sidebar" text="Sidestolpe"/>
+<l:gentext key="sidebar" text="sidestolpe"/>
+<l:gentext key="step" text="steg"/>
+<l:gentext key="Step" text="Steg"/>
+<l:gentext key="table" text="tabell"/>
+<l:gentext key="Table" text="Tabell"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="tips"/>
+<l:gentext key="TIP" text="TIPS"/>
+<l:gentext key="Tip" text="Tips"/>
+<l:gentext key="Warning" text="Åtvaring"/>
+<l:gentext key="warning" text="åtvaring"/>
+<l:gentext key="WARNING" text="ÅTVARING"/>
+<l:gentext key="and" text="og"/>
+<l:gentext key="by" text="av"/>
+<l:gentext key="Edited" text="Redigert"/>
+<l:gentext key="edited" text="redigert"/>
+<l:gentext key="Editedby" text="Redigert av"/>
+<l:gentext key="editedby" text="redigert av"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="ikkje-eksisterande element"/>
+<l:gentext key="notes" text="merknader"/>
+<l:gentext key="Notes" text="Merknader"/>
+<l:gentext key="Pgs" text="Sider"/>
+<l:gentext key="pgs" text="sider"/>
+<l:gentext key="Revisedby" text="Revidert av: "/>
+<l:gentext key="revisedby" text="revidert av: "/>
+<l:gentext key="TableNotes" text="Merknader"/>
+<l:gentext key="tablenotes" text="merknader"/>
+<l:gentext key="TableofContents" text="Innhald"/>
+<l:gentext key="tableofcontents" text="Innhald"/>
+<l:gentext key="unexpectedelementname" text="UVENTA-ELEMENTNAVN"/>
+<l:gentext key="unsupported" text="ikkje støtta"/>
+<l:gentext key="xrefto" text="xref til"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="formeloversikt"/>
+<l:gentext key="ListofEquations" text="Formeloversikt"/>
+<l:gentext key="ListofExamples" text="Dømeoversikt"/>
+<l:gentext key="listofexamples" text="dømeoversikt"/>
+<l:gentext key="ListofFigures" text="Figuroversikt"/>
+<l:gentext key="listoffigures" text="figuroversikt"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="tabelloversikt"/>
+<l:gentext key="ListofTables" text="Tabelloversikt"/>
+<l:gentext key="ListofUnknown" text="???-oversikt"/>
+<l:gentext key="listofunknown" text="???-oversikt"/>
+<l:gentext key="nav-home" text="Heim"/>
+<l:gentext key="nav-next" text="Fram"/>
+<l:gentext key="nav-next-sibling" text="Raskt framover"/>
+<l:gentext key="nav-prev" text="Att"/>
+<l:gentext key="nav-prev-sibling" text="Raskt bakover"/>
+<l:gentext key="nav-up" text="Opp"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Tillegg %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapittel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Formel %n. %t"/>
+<l:template name="example" text="Døme %n. %t"/>
+<l:template name="figure" text="Figur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prosedyre %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabell %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Tillegg %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Kapittel %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Spørsmål %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Spørsmål %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Svar %n"/>
+<l:template name="appendix" text="Tillegg %n"/>
+<l:template name="bridgehead" text="Del %n"/>
+<l:template name="chapter" text="Kapittel %n"/>
+<l:template name="equation" text="Formel %n"/>
+<l:template name="example" text="Døme %n"/>
+<l:template name="figure" text="Figur %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Prosedyre %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Spørsmål og Svar %n"/>
+<l:template name="qandaentry" text="Spørsmål %n"/>
+<l:template name="question" text="Spørsmål %n"/>
+<l:template name="sect1" text="Del %n"/>
+<l:template name="sect2" text="Del %n"/>
+<l:template name="sect3" text="Del %n"/>
+<l:template name="sect4" text="Del %n"/>
+<l:template name="sect5" text="Del %n"/>
+<l:template name="section" text="Del %n"/>
+<l:template name="table" text="Tabell %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Tillegg %n, %t"/>
+<l:template name="bridgehead" text="Del %n, “%t”"/>
+<l:template name="chapter" text="Kapittel %n, %t"/>
+<l:template name="equation" text="Formel %n, “%t”"/>
+<l:template name="example" text="Døme %n, “%t”"/>
+<l:template name="figure" text="Figur %n, “%t”"/>
+<l:template name="part" text="Del %n, “%t”"/>
+<l:template name="procedure" text="Prosedyre %n, “%t”"/>
+<l:template name="productionset" text="Production %n, “%t”"/>
+<l:template name="qandadiv" text="Spørsmål og Svar %n, “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="sect1" text="Del %n, “%t”"/>
+<l:template name="sect2" text="Del %n, “%t”"/>
+<l:template name="sect3" text="Del %n, “%t”"/>
+<l:template name="sect4" text="Del %n, “%t”"/>
+<l:template name="sect5" text="Del %n, “%t”"/>
+<l:template name="section" text="Del %n, “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+<l:template name="table" text="Tabell %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" og "/>
+<l:template name="seplast" text=", og "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Sjå %t"/>
+<l:template name="seealso" text="Sjå òg %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publikum: "/>
+<l:template name="MsgLevel" text="Nivå: "/>
+<l:template name="MsgOrig" text="Opphav: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0814 Norwegian (Nynorsk)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/no.xml b/docs/xsl-generic/common/no.xml
new file mode 100644
index 00000000..27e2279e
--- /dev/null
+++ b/docs/xsl-generic/common/no.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="no" english-language-name="Norwegian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/no.xml -->
+<!-- * -->
+<!-- * E-mail the edited no.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstract"/>
+<l:gentext key="abstract" text="Abstract"/>
+<l:gentext key="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="Author" text="Author" lang="en"/>
+<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="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Formel"/>
+<l:gentext key="equation" text="Formel"/>
+<l:gentext key="Example" text="Eksempel"/>
+<l:gentext key="example" text="Eksempel"/>
+<l:gentext key="Figure" text="Figur"/>
+<l:gentext key="figure" text="Figur"/>
+<l:gentext key="Glossary" text="Ordliste"/>
+<l:gentext key="glossary" text="Ordliste"/>
+<l:gentext key="GlossSee" text="Se"/>
+<l:gentext key="glosssee" text="Se"/>
+<l:gentext key="GlossSeeAlso" text="Se Også"/>
+<l:gentext key="glossseealso" text="Se Også"/>
+<l:gentext key="IMPORTANT" text="VIKTIG"/>
+<l:gentext key="important" text="Viktig"/>
+<l:gentext key="Important" text="Viktig"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="Indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text=""/>
+<l:gentext key="legalnotice" text=""/>
+<l:gentext key="MsgAud" text="Publikum"/>
+<l:gentext key="msgaud" text="Publikum"/>
+<l:gentext key="MsgLevel" text="Nivå"/>
+<l:gentext key="msglevel" text="Nivå"/>
+<l:gentext key="MsgOrig" text="Opphav"/>
+<l:gentext key="msgorig" text="Opphav"/>
+<l:gentext key="NOTE" text="NOTAT"/>
+<l:gentext key="Note" text="Notat"/>
+<l:gentext key="note" text="Notat"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="Del"/>
+<l:gentext key="Preface" text="Forord"/>
+<l:gentext key="preface" text="Forord"/>
+<l:gentext key="Procedure" text="Prosedyre"/>
+<l:gentext key="procedure" text="Prosedyre"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text=""/>
+<l:gentext key="published" text=""/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="Q:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referanse"/>
+<l:gentext key="reference" text="Referanse"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Navn"/>
+<l:gentext key="refname" text="Navn"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Revisjonshistorie"/>
+<l:gentext key="revhistory" text="Revisjonshistorie"/>
+<l:gentext key="revision" text="Revisjon"/>
+<l:gentext key="Revision" text="Revisjon"/>
+<l:gentext key="sect1" text="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å"/>
+<l:gentext key="Seealso" text="Se også"/>
+<l:gentext key="SeeAlso" text="Se Også"/>
+<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="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tips"/>
+<l:gentext key="TIP" text="TIPS"/>
+<l:gentext key="Tip" text="Tips"/>
+<l:gentext key="Warning" text="Advarsel"/>
+<l:gentext key="warning" text="Advarsel"/>
+<l:gentext key="WARNING" text="ADVARSEL"/>
+<l:gentext key="and" text="og"/>
+<l:gentext key="by" text="av"/>
+<l:gentext key="Edited" text="Redigert"/>
+<l:gentext key="edited" text="Redigert"/>
+<l:gentext key="Editedby" text="Redigert av"/>
+<l:gentext key="editedby" text="Redigert av"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="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øttet"/>
+<l:gentext key="xrefto" text="xref til"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Formeloversikt"/>
+<l:gentext key="ListofEquations" text="Formeloversikt"/>
+<l:gentext key="ListofExamples" text="Eksempeloversikt"/>
+<l:gentext key="listofexamples" text="Eksempeloversikt"/>
+<l:gentext key="ListofFigures" text="Figuroversikt"/>
+<l:gentext key="listoffigures" text="Figuroversikt"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Tabelloversikt"/>
+<l:gentext key="ListofTables" text="Tabelloversikt"/>
+<l:gentext key="ListofUnknown" text="???-oversikt"/>
+<l:gentext key="listofunknown" text="???-oversikt"/>
+<l:gentext key="nav-home" text="Hjem"/>
+<l:gentext key="nav-next" text="Neste"/>
+<l:gentext key="nav-next-sibling" text="Raskt Fremover"/>
+<l:gentext key="nav-prev" text="Forrige"/>
+<l:gentext key="nav-prev-sibling" text="Raskt Bakover"/>
+<l:gentext key="nav-up" text="Opp"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="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:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Tillegg %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapittel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Formel %n. %t"/>
+<l:template name="example" text="Eksempel %n. %t"/>
+<l:template name="figure" text="Figur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Prosedyre %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabell %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Tillegg %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Kapittel %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Tillegg %n"/>
+<l:template name="bridgehead" text="Seksjon %n"/>
+<l:template name="chapter" text="Kapittel %n"/>
+<l:template name="equation" text="Formel %n"/>
+<l:template name="example" text="Eksempel %n"/>
+<l:template name="figure" text="Figur %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Prosedyre %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="Seksjon %n"/>
+<l:template name="sect2" text="Seksjon %n"/>
+<l:template name="sect3" text="Seksjon %n"/>
+<l:template name="sect4" text="Seksjon %n"/>
+<l:template name="sect5" text="Seksjon %n"/>
+<l:template name="section" text="Seksjon %n"/>
+<l:template name="table" text="Tabell %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Tillegg %n, %t"/>
+<l:template name="bridgehead" text="Seksjon %n, “%t”"/>
+<l:template name="chapter" text="Kapittel %n, %t"/>
+<l:template name="equation" text="Formel %n, “%t”"/>
+<l:template name="example" text="Eksempel %n, “%t”"/>
+<l:template name="figure" text="Figur %n, “%t”"/>
+<l:template name="part" text="Del %n, “%t”"/>
+<l:template name="procedure" text="Prosedyre %n, “%t”"/>
+<l:template name="productionset" text="Production %n, “%t”"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="sect1" text="Seksjon %n, “%t”"/>
+<l:template name="sect2" text="Seksjon %n, “%t”"/>
+<l:template name="sect3" text="Seksjon %n, “%t”"/>
+<l:template name="sect4" text="Seksjon %n, “%t”"/>
+<l:template name="sect5" text="Seksjon %n, “%t”"/>
+<l:template name="section" text="Seksjon %n, “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+<l:template name="table" text="Tabell %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" og "/>
+<l:template name="seplast" text=", og "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Se %t"/>
+<l:template name="seealso" text="Se Også %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publikum: "/>
+<l:template name="MsgLevel" text="Nivå: "/>
+<l:template name="MsgOrig" text="Opphav: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0414 Norwegian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/olink.xsl b/docs/xsl-generic/common/olink.xsl
new file mode 100644
index 00000000..91849263
--- /dev/null
+++ b/docs/xsl-generic/common/olink.xsl
@@ -0,0 +1,1149 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- Create keys for quickly looking up olink targets -->
+<xsl:key name="targetdoc-key" match="document" use="@targetdoc" />
+<xsl:key name="targetptr-key" match="div|obj"
+ use="concat(ancestor::document/@targetdoc, '/',
+ @targetptr, '/', ancestor::document/@lang)" />
+
+<!-- Return filename of database -->
+<xsl:template name="select.target.database">
+ <xsl:param name="targetdoc.att" select="''"/>
+ <xsl:param name="targetptr.att" select="''"/>
+ <xsl:param name="olink.lang" select="''"/>
+
+ <!-- use root's xml:base if exists -->
+ <xsl:variable name="xml.base" select="/*/@xml:base"/>
+
+ <!-- This selection can be customized if needed -->
+ <xsl:variable name="target.database.filename">
+ <xsl:choose>
+ <xsl:when test="$xml.base != '' and
+ not(starts-with($target.database.document, 'file:/')) and
+ not(starts-with($target.database.document, '/'))">
+ <xsl:call-template name="systemIdToBaseURI">
+ <xsl:with-param name="systemId" select="$xml.base"/>
+ </xsl:call-template>
+ <xsl:value-of select="$target.database.document"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$target.database.document"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="target.database"
+ select="document($target.database.filename,/)"/>
+
+ <xsl:choose>
+ <!-- Was the database document parameter not set? -->
+ <xsl:when test="$target.database.document = ''">
+ <xsl:message>
+ <xsl:text>Olinks not processed: must specify a </xsl:text>
+ <xsl:text>$target.database.document parameter&#10;</xsl:text>
+ <xsl:text>when using olinks with targetdoc </xsl:text>
+ <xsl:text>and targetptr attributes.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <!-- Did it not open? Should be a targetset element -->
+ <xsl:when test="not($target.database/*)">
+ <xsl:message>
+ <xsl:text>Olink error: could not open target database '</xsl:text>
+ <xsl:value-of select="$target.database.filename"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$target.database.filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="select.olink.key">
+ <xsl:param name="targetdoc.att" select="''"/>
+ <xsl:param name="targetptr.att" select="''"/>
+ <xsl:param name="olink.lang" select="''"/>
+ <xsl:param name="target.database"/>
+
+ <xsl:if test="$target.database/*">
+ <xsl:variable name="olink.fallback.sequence">
+ <xsl:call-template name="select.olink.lang.fallback">
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Recurse through the languages until you find a match -->
+ <xsl:call-template name="select.olink.key.in.lang">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="fallback.index" select="1"/>
+ <xsl:with-param name="olink.fallback.sequence"
+ select="$olink.fallback.sequence"/>
+ </xsl:call-template>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- Locate olink key in a particular language -->
+<xsl:template name="select.olink.key.in.lang">
+ <xsl:param name="targetdoc.att" select="''"/>
+ <xsl:param name="targetptr.att" select="''"/>
+ <xsl:param name="olink.lang" select="''"/>
+ <xsl:param name="target.database"/>
+ <xsl:param name="fallback.index" select="1"/>
+ <xsl:param name="olink.fallback.sequence" select="''"/>
+
+ <xsl:variable name="target.lang">
+ <xsl:call-template name="select.target.lang">
+ <xsl:with-param name="fallback.index" select="$fallback.index"/>
+ <xsl:with-param name="olink.fallback.sequence"
+ select="$olink.fallback.sequence"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message><xsl:text>Olink debug: cases for targetdoc='</xsl:text>
+ <xsl:value-of select="$targetdoc.att"/>
+ <xsl:text>' and targetptr='</xsl:text>
+ <xsl:value-of select="$targetptr.att"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$target.lang"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <!-- Customize these cases if you want different selection logic -->
+ <xsl:variable name="CaseA">
+ <!-- targetdoc.att = not blank
+ targetptr.att = not blank
+ -->
+ <xsl:if test="$targetdoc.att != '' and
+ $targetptr.att != ''">
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($targetdoc.att, '/',
+ $targetptr.att, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseA matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseA NOT matched</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseB">
+ <!-- targetdoc.att = not blank
+ targetptr.att = not blank
+ prefer.internal.olink = not zero
+ current.docid = not blank
+ -->
+ <xsl:if test="$targetdoc.att != '' and
+ $targetptr.att != '' and
+ $current.docid != '' and
+ $prefer.internal.olink != 0">
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($current.docid, '/',
+ $targetptr.att, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseB matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseB NOT matched</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseC">
+ <!-- targetdoc.att = blank
+ targetptr.att = not blank
+ current.docid = not blank
+ -->
+ <xsl:if test="string-length($targetdoc.att) = 0 and
+ $targetptr.att != '' and
+ $current.docid != ''">
+ <!-- Must use a for-each to change context for keys to work -->
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($current.docid, '/',
+ $targetptr.att, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseC matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseC NOT matched.</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseD">
+ <!-- targetdoc.att = blank
+ targetptr.att = not blank
+ current.docid = blank
+ -->
+ <!-- This is possible if only one document in the database -->
+ <xsl:if test="string-length($targetdoc.att) = 0 and
+ $targetptr.att != '' and
+ string-length($current.docid) = 0 and
+ count($target.database//document) = 1">
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat(.//document/@targetdoc, '/',
+ $targetptr.att, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseD matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseD NOT matched</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseE">
+ <!-- targetdoc.att = not blank
+ targetptr.att = blank
+ -->
+ <xsl:if test="$targetdoc.att != '' and
+ string-length($targetptr.att) = 0">
+
+ <!-- Try the document's root element id -->
+ <xsl:variable name="rootid">
+ <xsl:choose>
+ <xsl:when test="$target.lang != ''">
+ <xsl:value-of select="$target.database//document[@targetdoc = $targetdoc.att and @lang = $target.lang]/*[1]/@targetptr"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$target.database//document[@targetdoc = $targetdoc.att and not(@lang)]/*[1]/@targetptr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($targetdoc.att, '/',
+ $rootid, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseE matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseE NOT matched.</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="CaseF">
+ <!-- targetdoc.att = not blank
+ targetptr.att = blank
+ prefer.internal.olink = not zero
+ current.docid = not blank
+ -->
+ <xsl:if test="$targetdoc.att != '' and
+ string-length($targetptr.att) = 0 and
+ $current.docid != '' and
+ $prefer.internal.olink != 0">
+ <!-- Try the document's root element id -->
+ <xsl:variable name="rootid">
+ <xsl:choose>
+ <xsl:when test="$target.lang != ''">
+ <xsl:value-of select="$target.database//document[@targetdoc = $current.docid and @lang = $target.lang]/*[1]/@targetptr"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$target.database//document[@targetdoc = $current.docid and not(@lang)]/*[1]/@targetptr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="$target.database">
+ <xsl:variable name="key"
+ select="concat($current.docid, '/',
+ $rootid, '/',
+ $target.lang)"/>
+ <xsl:choose>
+ <xsl:when test="key('targetptr-key', $key)/@href != ''">
+ <xsl:value-of select="$key"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseF matched.</xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$olink.debug != 0">
+ <xsl:message>Olink debug: CaseF NOT matched.</xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:variable>
+
+ <!-- Now select the best match. Customize the order if needed -->
+ <xsl:variable name="selected.key">
+ <xsl:choose>
+ <xsl:when test="$CaseB != ''">
+ <xsl:value-of select="$CaseB"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseB key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseB"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseA != ''">
+ <xsl:value-of select="$CaseA"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseA key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseA"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseC != ''">
+ <xsl:value-of select="$CaseC"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseC key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseC"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseD != ''">
+ <xsl:value-of select="$CaseD"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseD key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseD"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseF != ''">
+ <xsl:value-of select="$CaseF"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseF key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseF"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$CaseE != ''">
+ <xsl:value-of select="$CaseE"/>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: CaseE key is the final selection: </xsl:text>
+ <xsl:value-of select="$CaseE"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: No case matched for lang '</xsl:text>
+ <xsl:value-of select="$target.lang"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$selected.key != ''">
+ <xsl:value-of select="$selected.key"/>
+ </xsl:when>
+ <xsl:when test="string-length($selected.key) = 0 and
+ string-length($target.lang) = 0">
+ <!-- No match on last try, and we are done -->
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Recurse through next language -->
+ <xsl:call-template name="select.olink.key.in.lang">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="fallback.index" select="$fallback.index + 1"/>
+ <xsl:with-param name="olink.fallback.sequence"
+ select="$olink.fallback.sequence"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="select.target.lang">
+ <xsl:param name="fallback.index" select="1"/>
+ <xsl:param name="olink.fallback.sequence" select="''"/>
+
+ <!-- recurse backwards to find the lang matching the index -->
+ <xsl:variable name="firstlang"
+ select="substring-before($olink.fallback.sequence, ' ')"/>
+ <xsl:variable name="rest"
+ select="substring-after($olink.fallback.sequence, ' ')"/>
+ <xsl:choose>
+ <xsl:when test="$fallback.index = 1">
+ <xsl:value-of select="$firstlang"/>
+ </xsl:when>
+ <xsl:when test="$fallback.index &gt; 1">
+ <xsl:call-template name="select.target.lang">
+ <xsl:with-param name="fallback.index" select="$fallback.index - 1"/>
+ <xsl:with-param name="olink.fallback.sequence"
+ select="$rest"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="select.olink.lang.fallback">
+ <xsl:param name="olink.lang" select="''"/>
+
+ <!-- Prefer language of the olink element -->
+ <xsl:value-of select="concat(normalize-space(concat($olink.lang, ' ',
+ $olink.lang.fallback.sequence)), ' ')"/>
+</xsl:template>
+
+<!-- Returns the complete olink href value if found -->
+<xsl:template name="make.olink.href">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="target.database"/>
+
+ <xsl:if test="$olink.key != ''">
+ <xsl:variable name="target.href" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)/@href" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <!-- Does the target database use a sitemap? -->
+ <xsl:variable name="use.sitemap">
+ <xsl:choose>
+ <xsl:when test="$target.database//sitemap">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+
+ <!-- Get the baseuri for this targetptr -->
+ <xsl:variable name="baseuri" >
+ <xsl:choose>
+ <!-- Does the database use a sitemap? -->
+ <xsl:when test="$use.sitemap != 0" >
+ <xsl:choose>
+ <!-- Was current.docid parameter set? -->
+ <xsl:when test="$current.docid != ''">
+ <!-- Was it found in the database? -->
+ <xsl:variable name="currentdoc.key" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key',
+ $current.docid)/@targetdoc" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$currentdoc.key != ''">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="targetpath" >
+ <xsl:with-param name="dirnode"
+ select="key('targetdoc-key', $current.docid)/parent::dir"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:for-each >
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path because $current.docid '</xsl:text>
+ <xsl:value-of select="$current.docid"/>
+ <xsl:text>' not found in target database.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink warning: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path without $current.docid parameter</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- In either case, add baseuri from its document entry-->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:when>
+ <!-- No database sitemap in use -->
+ <xsl:otherwise>
+ <!-- Just use any baseuri from its document entry -->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Form the href information -->
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and
+ translate(substring($baseuri, string-length($baseuri) - 3),
+ 'PDF', 'pdf') = '.pdf'
+ and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- Computes the href of the object containing the olink element -->
+<xsl:template name="olink.from.uri">
+ <xsl:param name="target.database"/>
+ <xsl:param name="object" select="NotAnElement"/>
+ <xsl:param name="object.targetdoc" select="$current.docid"/>
+ <xsl:param name="object.lang"
+ select="concat($object/ancestor::*[last()]/@lang,
+ $object/ancestor::*[last()]/@xml:lang)"/>
+
+ <xsl:variable name="parent.id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Get the olink key for the parent of olink element -->
+ <xsl:variable name="from.key">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$object.targetdoc"/>
+ <xsl:with-param name="targetptr.att" select="$parent.id"/>
+ <xsl:with-param name="olink.lang" select="$object.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="from.olink.href">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $from.key)/@href" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- we found the olink object -->
+ <xsl:when test="$from.olink.href != ''">
+ <xsl:value-of select="$from.olink.href"/>
+ </xsl:when>
+ <xsl:when test="not($object/parent::*)">
+ <xsl:value-of select="$from.olink.href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- recurse upward in current document -->
+ <xsl:call-template name="olink.from.uri">
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="object" select="$object/parent::*"/>
+ <xsl:with-param name="object.targetdoc" select="$object.targetdoc"/>
+ <xsl:with-param name="object.lang" select="$object.lang"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="olink.hottext">
+ <xsl:param name="target.database"/>
+ <xsl:param name="olink.lang" select="''"/>
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="referrer" select="."/>
+ <xsl:param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <!-- If it has elements or text (not just PI or comment) -->
+ <xsl:when test="child::text() or child::*">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$olink.key != ''">
+ <!-- Get the xref text for this record -->
+ <xsl:variable name="xref.text" >
+ <xsl:for-each select="$target.database" >
+ <xsl:copy-of
+ select="key('targetptr-key', $olink.key)/xreftext/node()" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="xref.number" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)/@number" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="target.elem" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)/@element" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="lang">
+ <xsl:variable name="candidate">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)/@lang" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$candidate != ''">
+ <xsl:value-of select="$candidate"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$olink.lang"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$xrefstyle != '' and
+ starts-with(normalize-space($xrefstyle), 'select:') and
+ (contains($xrefstyle, 'nodocname') or
+ contains($xrefstyle, 'nopage')) and
+ not(contains($xrefstyle, 'title')) and
+ not(contains($xrefstyle, 'label'))">
+ <xsl:copy-of select="$xref.text"/>
+ </xsl:when>
+ <xsl:when test="$xrefstyle != ''">
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>xrefstyle is '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:variable name="template">
+ <xsl:choose>
+ <xsl:when test="starts-with(normalize-space($xrefstyle),
+ 'select:')">
+ <xsl:call-template name="make.gentext.template">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="purpose" select="'olink'"/>
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="target.elem" select="$target.elem"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with(normalize-space($xrefstyle),
+ 'template:')">
+ <xsl:value-of select="substring-after(
+ normalize-space($xrefstyle), 'template:')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Look for Gentext template with @style attribute -->
+ <!-- Must compare to no style value because gentext.template
+ falls back to no style -->
+
+ <xsl:variable name="xref-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="styled-xref-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="xref-number-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref-number'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="styled-xref-number-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref-number'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="xref-number-and-title-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context"
+ select="'xref-number-and-title'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="styled-xref-number-and-title-context">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context"
+ select="'xref-number-and-title'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$xref-number-and-title-context !=
+ $styled-xref-number-and-title-context and
+ $xref.number != '' and
+ $xref.with.number.and.title != 0">
+ <xsl:value-of
+ select="$styled-xref-number-and-title-context"/>
+ </xsl:when>
+ <xsl:when test="$xref-number-context !=
+ $styled-xref-number-context and
+ $xref.number != ''">
+ <xsl:value-of select="$styled-xref-number-context"/>
+ </xsl:when>
+ <xsl:when test="$xref-context != $styled-xref-context">
+ <xsl:value-of select="$styled-xref-context"/>
+ </xsl:when>
+ <xsl:when test="$xref-number-and-title-context != '' and
+ $xref.number != '' and
+ $xref.with.number.and.title != 0">
+ <xsl:value-of
+ select="$xref-number-and-title-context"/>
+ <xsl:if test="$olink.debug">
+ <xsl:message>
+ <xsl:text>Olink error: no gentext template</xsl:text>
+ <xsl:text> exists for xrefstyle '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>' for element '</xsl:text>
+ <xsl:value-of select="$target.elem"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>' in context 'xref-number-and-title</xsl:text>
+ <xsl:text>'. Using template without @style.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$xref-number-context != '' and
+ $xref.number != ''">
+ <xsl:value-of select="$xref-number-context"/>
+ <xsl:if test="$olink.debug">
+ <xsl:message>
+ <xsl:text>Olink error: no gentext template</xsl:text>
+ <xsl:text> exists for xrefstyle '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>' for element '</xsl:text>
+ <xsl:value-of select="$target.elem"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>' in context 'xref-number</xsl:text>
+ <xsl:text>'. Using template without @style.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$xref-context != ''">
+ <xsl:value-of select="$xref-context"/>
+ <xsl:if test="$olink.debug">
+ <xsl:message>
+ <xsl:text>Olink error: no gentext template</xsl:text>
+ <xsl:text> exists for xrefstyle '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>' for element '</xsl:text>
+ <xsl:value-of select="$target.elem"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>' in context 'xref</xsl:text>
+ <xsl:text>'. Using template without @style.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: no gentext template</xsl:text>
+ <xsl:text> exists for xrefstyle '</xsl:text>
+ <xsl:value-of select="$xrefstyle"/>
+ <xsl:text>' for element '</xsl:text>
+ <xsl:value-of select="$target.elem"/>
+ <xsl:text>' in language '</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>'. Trying '%t'.</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="'%t'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: xrefstyle template is '</xsl:text>
+ <xsl:value-of select="$template"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)/ttl" />
+ </xsl:for-each>
+ </xsl:with-param>
+ <xsl:with-param name="label">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)/@number" />
+ </xsl:for-each>
+ </xsl:with-param>
+ <xsl:with-param name="pagenumber">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)/@page" />
+ </xsl:for-each>
+ </xsl:with-param>
+ <xsl:with-param name="docname">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetdoc-key', $targetdoc)/div[1]/ttl" />
+ </xsl:for-each>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$use.local.olink.style != 0">
+
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="name" select="$target.elem"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)/ttl" />
+ </xsl:for-each>
+ </xsl:with-param>
+ <xsl:with-param name="label">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)/@number" />
+ </xsl:for-each>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$xref.text !=''">
+ <xsl:copy-of select="$xref.text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: no generated text for </xsl:text>
+ <xsl:text>targetdoc/targetptr/lang = '</xsl:text>
+ <xsl:value-of select="$olink.key"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ <xsl:text>????</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@targetdoc != '' or @targetptr != ''">
+ <xsl:if test="$olink.key != ''">
+ <xsl:message>
+ <xsl:text>Olink error: no generated text for </xsl:text>
+ <xsl:text>targetdoc/targetptr/lang = '</xsl:text>
+ <xsl:value-of select="$olink.key"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:text>????</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- old style olink -->
+ <xsl:call-template name="olink.outline">
+ <xsl:with-param name="outline.base.uri"
+ select="unparsed-entity-uri(@targetdocent)"/>
+ <xsl:with-param name="localinfo" select="@localinfo"/>
+ <xsl:with-param name="return" select="'xreftext'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="olink.docname.markup">
+ <!-- No-op for now -->
+</xsl:template>
+
+<xsl:template name="targetpath">
+ <xsl:param name="dirnode" />
+ <xsl:param name="targetdoc" select="''"/>
+
+<!--
+<xsl:message>dirnode is <xsl:value-of select="$dirnode/@name"/></xsl:message>
+<xsl:message>targetdoc is <xsl:value-of select="$targetdoc"/></xsl:message>
+-->
+ <!-- recursive template generates path to olink target directory -->
+ <xsl:choose>
+ <!-- Have we arrived at the final path step? -->
+ <xsl:when test="$dirnode/child::document[@targetdoc = $targetdoc]">
+ <!-- We are done -->
+ </xsl:when>
+ <!-- Have we reached the top without a match? -->
+ <xsl:when test="local-name($dirnode) != 'dir'" >
+ <xsl:message>Olink error: cannot locate targetdoc <xsl:value-of select="$targetdoc"/> in sitemap</xsl:message>
+ </xsl:when>
+ <!-- Is the target in a descendant? -->
+ <xsl:when test="$dirnode/descendant::document/@targetdoc = $targetdoc">
+ <xsl:variable name="step" select="$dirnode/child::dir[descendant::document/@targetdoc = $targetdoc]"/>
+ <xsl:if test = "$step">
+ <xsl:value-of select="$step/@name"/>
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ <!-- Now recurse with the child -->
+ <xsl:call-template name="targetpath" >
+ <xsl:with-param name="dirnode" select="$step"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Otherwise we need to move up a step -->
+ <xsl:otherwise>
+ <xsl:if test="$dirnode/parent::dir">
+ <xsl:text>../</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="targetpath" >
+ <xsl:with-param name="dirnode" select="$dirnode/parent::*"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="olink.page.citation">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="olink.lang" select="'en'"/>
+ <xsl:param name="target.database"/>
+ <xsl:param name="linkend" select="''"/>
+ <xsl:param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:call-template name="xref.page.citation">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="target" select="key('id', $linkend)"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(starts-with(normalize-space($xrefstyle),
+ 'select:')
+ and (contains($xrefstyle, 'page')
+ or contains($xrefstyle, 'Page')))
+ and $current.docid != ''
+ and $current.docid != $targetdoc
+ and $insert.olink.page.number = 'yes' ">
+
+ <xsl:variable name="page-number">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)/@page" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="$page-number != ''">
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'olink.page.citation'"/>
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="pagenumber" select="$page-number"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="olink.document.citation">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="olink.lang" select="'en'"/>
+ <xsl:param name="target.database"/>
+ <xsl:param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:variable name="page">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetptr-key', $olink.key)/@page" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <xsl:variable name="targetptr">
+ <xsl:value-of
+ select="substring-before(substring-after($olink.key, '/'), '/')"/>
+ </xsl:variable>
+
+ <!-- Don't add docname if pointing to root element -->
+ <xsl:variable name="rootptr">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetdoc-key', $targetdoc)/div[1]/@targetptr" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="docname">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of
+ select="key('targetdoc-key', $targetdoc)/div[1]/ttl" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="not(starts-with(normalize-space($xrefstyle), 'select:')
+ and (contains($xrefstyle, 'docname')))
+ and ($olink.doctitle = 'yes' or $olink.doctitle = '1')
+ and $current.docid != ''
+ and $rootptr != $targetptr
+ and $current.docid != $targetdoc
+ and $docname != ''">
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'olink.document.citation'"/>
+ <xsl:with-param name="context" select="'xref'"/>
+ <xsl:with-param name="lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="docname" select="$docname"/>
+ <xsl:with-param name="pagenumber" select="$page"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="xref.page.citation">
+ <!-- Determine if this xref should have a page citation.
+ Context node is the xref or local olink element -->
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="target" select="key('id', $linkend)"/>
+ <xsl:param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:if test="not(starts-with(normalize-space($xrefstyle),'select:')
+ and (contains($xrefstyle, 'page')
+ or contains($xrefstyle, 'Page')))
+ and ( $insert.xref.page.number = 'yes'
+ or $insert.xref.page.number = '1')
+ or local-name($target) = 'para'">
+ <xsl:apply-templates select="$target" mode="page.citation">
+ <xsl:with-param name="id" select="$linkend"/>
+ </xsl:apply-templates>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/common/or.xml b/docs/xsl-generic/common/or.xml
new file mode 100644
index 00000000..0c3593f7
--- /dev/null
+++ b/docs/xsl-generic/common/or.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="or" english-language-name="Oriya">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/or.xml -->
+<!-- * -->
+<!-- * E-mail the edited or.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ସାରାଂଶ"/>
+<l:gentext key="abstract" text="ସାରାଂଶ"/>
+<l:gentext key="Answer" text="ଉ:"/>
+<l:gentext key="answer" text="ଉ:"/>
+<l:gentext key="Appendix" text="ପରିଶିଷ୍ଠ"/>
+<l:gentext key="appendix" text="ପରିଶିଷ୍ଠ"/>
+<l:gentext key="Article" text="ନିବନ୍ଧ"/>
+<l:gentext key="article" text="ନିବନ୍ଧ"/>
+<l:gentext key="Author" text="ଲେଖକ"/>
+<l:gentext key="Bibliography" text="ଗ୍ରନ୍ଥସୂଚୀ"/>
+<l:gentext key="bibliography" text="ଗ୍ରନ୍ଥସୂଚୀ"/>
+<l:gentext key="Book" text="ପୁସ୍ତକ"/>
+<l:gentext key="book" text="ପୁସ୍ତକ"/>
+<l:gentext key="CAUTION" text="ସାବଧାନ"/>
+<l:gentext key="Caution" text="ସାବଧାନ"/>
+<l:gentext key="caution" text="ସାବଧାନ"/>
+<l:gentext key="Chapter" text="ଅଧ୍ଯାୟ"/>
+<l:gentext key="chapter" text="ଅଧ୍ଯାୟ"/>
+<l:gentext key="Colophon" text="ପୁସ୍ତକ ପରିଚୟ"/>
+<l:gentext key="colophon" text="ପୁସ୍ତକ ପରିଚୟ"/>
+<l:gentext key="Copyright" text="ସ୍ବତ୍ତ୍ବାଧୀକାର"/>
+<l:gentext key="copyright" text="ସ୍ବତ୍ତ୍ବାଧୀକାର"/>
+<l:gentext key="Dedication" text="ସମର୍ପଣ"/>
+<l:gentext key="dedication" text="ସମର୍ପଣ"/>
+<l:gentext key="Edition" text="ସଂସକରଣ"/>
+<l:gentext key="edition" text="ସଂସକରଣ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="ସମୀକରଣ"/>
+<l:gentext key="equation" text="ସମୀକରଣ"/>
+<l:gentext key="Example" text="ଉଦାହରଣ"/>
+<l:gentext key="example" text="ଉଦାହରଣ"/>
+<l:gentext key="Figure" text="ଚିତ୍ର"/>
+<l:gentext key="figure" text="ଚିତ୍ର"/>
+<l:gentext key="Glossary" text="ଶବ୍ଦକୋଷ"/>
+<l:gentext key="glossary" text="ଶବ୍ଦକୋଷ"/>
+<l:gentext key="GlossSee" text="ଦେଖନ୍ତୁ"/>
+<l:gentext key="glosssee" text="ଦେଖନ୍ତୁ"/>
+<l:gentext key="GlossSeeAlso" text="ଏହା ଭି ଦେଖନ୍ତୁ"/>
+<l:gentext key="glossseealso" text="ଏହା ଭି ଦେଖନ୍ତୁ"/>
+<l:gentext key="IMPORTANT" text="ଗୁରୁତ୍ବପୂର୍ଣ୍ଣ"/>
+<l:gentext key="important" text="ଗୁରୁତ୍ବପୂର୍ଣ୍ଣ"/>
+<l:gentext key="Important" text="ଗୁରୁତ୍ବପୂର୍ଣ୍ଣ"/>
+<l:gentext key="Index" text="ଅନୁକ୍ରମଣିକା"/>
+<l:gentext key="index" text="ଅନୁକ୍ରମଣିକା"/>
+<l:gentext key="ISBN" text="ଆଇ.ଏସ.ବି.ଏନ."/>
+<l:gentext key="isbn" text="ଆଇ.ଏସ.ବି.ଏନ."/>
+<l:gentext key="LegalNotice" text="ବୈଧାନିକ ସୂଚନା"/>
+<l:gentext key="legalnotice" text="ବୈଧାନିକ ସୂଚନା"/>
+<l:gentext key="MsgAud" text="ଶ୍ରୋତୃବର୍ଗ"/>
+<l:gentext key="msgaud" text="ଶ୍ରୋତୃବର୍ଗ"/>
+<l:gentext key="MsgLevel" text="ସ୍ତର"/>
+<l:gentext key="msglevel" text="ସ୍ତର"/>
+<l:gentext key="MsgOrig" text="ଉତ୍ପତ୍ତି"/>
+<l:gentext key="msgorig" text="ଉତ୍ପତ୍ତି"/>
+<l:gentext key="NOTE" text="ଟୀକା"/>
+<l:gentext key="Note" text="ଟୀକା"/>
+<l:gentext key="note" text="ଟୀକା"/>
+<l:gentext key="Part" text="ଭାଗ"/>
+<l:gentext key="part" text="ଭାଗ"/>
+<l:gentext key="Preface" text="ଭୂମିକା"/>
+<l:gentext key="preface" text="ଭୂମିକା"/>
+<l:gentext key="Procedure" text="କାର୍ଯ୍ଯବିଧି"/>
+<l:gentext key="procedure" text="କାର୍ଯ୍ଯବିଧି"/>
+<l:gentext key="ProductionSet" text="ଉତ୍ପାଦନ"/>
+<l:gentext key="PubDate" text="ପ୍ରକାଶନ ତାରୀଖ"/>
+<l:gentext key="pubdate" text="ପ୍ରକାଶନ ତାରୀଖ"/>
+<l:gentext key="Published" text="ପ୍ରକାଶିତ"/>
+<l:gentext key="published" text="ପ୍ରକାଶିତ"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="ପ୍ର &amp; ଉ"/>
+<l:gentext key="qandadiv" text="ପ୍ର &amp; ଉ"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ପ୍ର:"/>
+<l:gentext key="question" text="ପ୍ର:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="ସନ୍ଦର୍ଭ"/>
+<l:gentext key="reference" text="ସନ୍ଦର୍ଭ"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="ନାମ"/>
+<l:gentext key="refname" text="ନାମ"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="ସାରାଂଶ"/>
+<l:gentext key="refsynopsisdiv" text="ସାରାଂଶ"/>
+<l:gentext key="RevHistory" text="ସଂଶୋଧନ ଇତିହାସ"/>
+<l:gentext key="revhistory" text="ସଂଶୋଧନ ଇତିହାସ"/>
+<l:gentext key="revision" text="ସଂଶୋଧନ"/>
+<l:gentext key="Revision" text="ସଂଶୋଧନ"/>
+<l:gentext key="sect1" text="ଅଂଶ"/>
+<l:gentext key="sect2" text="ଅଂଶ"/>
+<l:gentext key="sect3" text="ଅଂଶ"/>
+<l:gentext key="sect4" text="ଅଂଶ"/>
+<l:gentext key="sect5" text="ଅଂଶ"/>
+<l:gentext key="section" text="ଅଂଶ"/>
+<l:gentext key="Section" text="ଅଂଶ"/>
+<l:gentext key="see" text="ଦେଖନ୍ତୁ"/>
+<l:gentext key="See" text="ଦେଖନ୍ତୁ"/>
+<l:gentext key="seealso" text="ଏହା ଭି ଦେଖନ୍ତୁ"/>
+<l:gentext key="Seealso" text="ଏହା ଭି ଦେଖନ୍ତୁ"/>
+<l:gentext key="SeeAlso" text="ଏହା ଭି ଦେଖନ୍ତୁ"/>
+<l:gentext key="set" text="ବିନ୍ଯାସ କରନ୍ତୁ"/>
+<l:gentext key="Set" text="ବିନ୍ଯାସ କରନ୍ତୁ"/>
+<l:gentext key="setindex" text="ଅନୁକ୍ରମଣିକା ବିନ୍ଯାସ କରନ୍ତୁ"/>
+<l:gentext key="SetIndex" text="ଅନୁକ୍ରମଣିକା ବିନ୍ଯାସ କରନ୍ତୁ"/>
+<l:gentext key="Sidebar" text="ପାର୍ଶ୍ବପଟି"/>
+<l:gentext key="sidebar" text="ପାର୍ଶ୍ବପଟି"/>
+<l:gentext key="step" text="ପଦକ୍ଷେପ"/>
+<l:gentext key="Step" text="ପଦକ୍ଷେପ"/>
+<l:gentext key="table" text="ସାରଣୀ"/>
+<l:gentext key="Table" text="ସାରଣୀ"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="ସଂକେତ"/>
+<l:gentext key="TIP" text="ସଂକେତ"/>
+<l:gentext key="Tip" text="ସଂକେତ"/>
+<l:gentext key="Warning" text="ଚେତାବନୀ"/>
+<l:gentext key="warning" text="ଚେତାବନୀ"/>
+<l:gentext key="WARNING" text="ଚେତାବନୀ"/>
+<l:gentext key="and" text="ଓ"/>
+<l:gentext key="by" text="ଦ୍ବାରା"/>
+<l:gentext key="Edited" text="ସମ୍ପାଦିତ"/>
+<l:gentext key="edited" text="ସମ୍ପାଦିତ"/>
+<l:gentext key="Editedby" text="ଦ୍ବାରା ସମ୍ପାଦିତ"/>
+<l:gentext key="editedby" text="ଦ୍ବାରା ସମ୍ପାଦିତ"/>
+<l:gentext key="in" text="ଭିତରେ"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="ଅସ୍ତିସ୍ବହୀନ ଉପାଦାନ"/>
+<l:gentext key="notes" text="ଟୀକା"/>
+<l:gentext key="Notes" text="ଟୀକା"/>
+<l:gentext key="Pgs" text="ପୃଷ୍ଠା"/>
+<l:gentext key="pgs" text="ପୃଷ୍ଠା"/>
+<l:gentext key="Revisedby" text="ଦ୍ବାରା ସଂଶୋଧିତ: "/>
+<l:gentext key="revisedby" text="ଦ୍ବାରା ସଂଶୋଧିତ: "/>
+<l:gentext key="TableNotes" text="ଟୀକା"/>
+<l:gentext key="tablenotes" text="ଟୀକା"/>
+<l:gentext key="TableofContents" text="ସୂଚୀପତ୍ର"/>
+<l:gentext key="tableofcontents" text="ସୂଚୀପତ୍ର"/>
+<l:gentext key="unexpectedelementname" text="ଅପ୍ରତ୍ଯାଶିତ ଉପାଦାନ ନାମ"/>
+<l:gentext key="unsupported" text="ଅସହାୟକ"/>
+<l:gentext key="xrefto" text="ସହିତ ପ୍ରାସଙ୍ଗିକ ସନ୍ଦର୍ଭ କରନ୍ତୁ"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="ସମୀକରଣ ତାଲିକା"/>
+<l:gentext key="ListofEquations" text="ସମୀକରଣ ତାଲିକା"/>
+<l:gentext key="ListofExamples" text="ଉଦାହରଣ ତାଲିକା"/>
+<l:gentext key="listofexamples" text="ଉଦାହରଣ ତାଲିକା"/>
+<l:gentext key="ListofFigures" text="ଚିତ୍ର ତାଲିକା"/>
+<l:gentext key="listoffigures" text="ଚିତ୍ର ତାଲିକା"/>
+<l:gentext key="ListofProcedures" text="କାର୍ଯ୍ଯବିଧି ତାଲିକା"/>
+<l:gentext key="listofprocedures" text="କାର୍ଯ୍ଯବିଧି ତାଲିକା"/>
+<l:gentext key="listoftables" text="ସାରଣୀ ତାଲିକା"/>
+<l:gentext key="ListofTables" text="ସାରଣୀ ତାଲିକା"/>
+<l:gentext key="ListofUnknown" text="ଅଜଣାର ତାଲିକା"/>
+<l:gentext key="listofunknown" text="ଅଜଣାର ତାଲିକା"/>
+<l:gentext key="nav-home" text="ମୂଳ ସ୍ଥାନ"/>
+<l:gentext key="nav-next" text="ପରବର୍ତ୍ତୀ"/>
+<l:gentext key="nav-next-sibling" text="ଦ୍ରୁତ ଆଗକୁ"/>
+<l:gentext key="nav-prev" text="ପୂର୍ବ"/>
+<l:gentext key="nav-prev-sibling" text="ଦ୍ରୁତ ପଛକୁ"/>
+<l:gentext key="nav-up" text="ଉପରକୁ"/>
+<l:gentext key="nav-toc" text="ସୂଚୀପତ୍ର"/>
+<l:gentext key="Draft" text="ଡ୍ରାଫ୍ଟ"/>
+<l:gentext key="above" text="ଉପରେ"/>
+<l:gentext key="below" text="ତଳେ"/>
+<l:gentext key="sectioncalled" text="ଏହି ଅଂଶର ନାମ"/>
+<l:gentext key="index symbols" text="ପ୍ରତୀକ"/>
+<l:gentext key="lowercase.alpha" text="ଅଆଇଈଉଊଋଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯୟରଲଳୱଶଷସହ"/>
+<l:gentext key="uppercase.alpha" text="ଅଆଇଈଉଊଋଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯୟରଲଳୱଶଷସହ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="ପ୍ରଥମ-ଶେଷ"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ପରିଶିଷ୍ଠ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="ଅଧ୍ଯାୟ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ସମୀକରଣ %n. %t"/>
+<l:template name="example" text="ଉଦାହରଣ %n. %t"/>
+<l:template name="figure" text="ଚିତ୍ର %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ଭାଗ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="କାର୍ଯ୍ଯବିଧି %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ଉତ୍ପାଦନ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ସାରଣୀ %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ପରିଶିଷ୍ଠ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="ଅଧ୍ଯାୟ %n. %t"/>
+<l:template name="part" text="ଭାଗ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ପ୍ର: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ପ୍ର: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text="%oରେ"/>
+<l:template name="olink.page.citation" text=" (ପୃଷ୍ଠା %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(ପୃଷ୍ଠା %p)"/>
+<l:template name="docname" text="%oରେ"/>
+<l:template name="docnamelong" text="%o ନାମକ ଦଲିଲରେ"/>
+<l:template name="pageabbrev" text="(ପୃ. %p)"/>
+<l:template name="Page" text="ପୃଷ୍ଠା %p"/>
+<l:template name="bridgehead" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="refsection" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="refsect1" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="refsect2" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="refsect3" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="sect1" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="sect2" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="sect3" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="sect4" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="sect5" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="section" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="simplesect" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ଉ: %n"/>
+<l:template name="appendix" text="ପରିଶିଷ୍ଠ %n"/>
+<l:template name="bridgehead" text="ଅଂଶ %n"/>
+<l:template name="chapter" text="ଅଧ୍ଯାୟ %n"/>
+<l:template name="equation" text="ସମୀକରଣ %n"/>
+<l:template name="example" text="ଉଦାହରଣ %n"/>
+<l:template name="figure" text="ଚିତ୍ର %n"/>
+<l:template name="part" text="ଭାଗ %n"/>
+<l:template name="procedure" text="କାର୍ଯ୍ଯବିଧି %n"/>
+<l:template name="productionset" text="ଉତ୍ପାଦନ %n"/>
+<l:template name="qandadiv" text="ପ୍ର &amp; ଉ %n"/>
+<l:template name="qandaentry" text="ପ୍ର: %n"/>
+<l:template name="question" text="ପ୍ର: %n"/>
+<l:template name="sect1" text="ଅଂଶ %n"/>
+<l:template name="sect2" text="ଅଂଶ %n"/>
+<l:template name="sect3" text="ଅଂଶ %n"/>
+<l:template name="sect4" text="ଅଂଶ %n"/>
+<l:template name="sect5" text="ଅଂଶ %n"/>
+<l:template name="section" text="ଅଂଶ %n"/>
+<l:template name="table" text="ସାରଣୀ %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ପରିଶିଷ୍ଠ %n, %t"/>
+<l:template name="bridgehead" text="ଅଂଶ %n, “%t”"/>
+<l:template name="chapter" text="ଅଧ୍ଯାୟ %n, %t"/>
+<l:template name="equation" text="ସମୀକରଣ %n, “%t”"/>
+<l:template name="example" text="ଉଦାହରଣ %n, “%t”"/>
+<l:template name="figure" text="ଚିତ୍ର %n, “%t”"/>
+<l:template name="part" text="ଭାଗ %n, “%t”"/>
+<l:template name="procedure" text="କାର୍ଯ୍ଯବିଧି %n, “%t”"/>
+<l:template name="productionset" text="ଉତ୍ପାଦନ %n, “%t”"/>
+<l:template name="qandadiv" text="ପ୍ର &amp; ଉ %n, “%t”"/>
+<l:template name="refsect1" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="refsect2" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="refsect3" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="refsection" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="sect1" text="ଅଂଶ %n, “%t”"/>
+<l:template name="sect2" text="ଅଂଶ %n, “%t”"/>
+<l:template name="sect3" text="ଅଂଶ %n, “%t”"/>
+<l:template name="sect4" text="ଅଂଶ %n, “%t”"/>
+<l:template name="sect5" text="ଅଂଶ %n, “%t”"/>
+<l:template name="section" text="ଅଂଶ %n, “%t”"/>
+<l:template name="simplesect" text="ଏହି ଅଂଶର ନାମ “%t”"/>
+<l:template name="table" text="ସାରଣୀ %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ଓ "/>
+<l:template name="seplast" text=", ଓ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ଦେଖନ୍ତୁ %t"/>
+<l:template name="seealso" text="ଏହା ଭି ଦେଖନ୍ତୁ %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ଶ୍ରୋତୃବର୍ଗ: "/>
+<l:template name="MsgLevel" text="ସ୍ତର: "/>
+<l:template name="MsgOrig" text="ଉତ୍ପତ୍ତି: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="ମାସ/ଦିନ/ବର୍ଷ"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[ବ୍ଯାଖ୍ଯା: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="ଜାନୁଆରି"/>
+<l:template name="February" text="ଫେବ୍ରୁଆରି"/>
+<l:template name="March" text="ମାର୍ଚ୍ଚ"/>
+<l:template name="April" text="ଏପ୍ରିଲ"/>
+<l:template name="May" text="ମେ"/>
+<l:template name="June" text="ଜୁନ"/>
+<l:template name="July" text="ଜୁଲାଇ"/>
+<l:template name="August" text="ଅଗଷ୍ଟ"/>
+<l:template name="September" text="ସେପ୍ଟେମ୍ବର"/>
+<l:template name="October" text="ଅକ୍ଟୋବର"/>
+<l:template name="November" text="ନଭେମ୍ବର"/>
+<l:template name="December" text="ଡିସେମ୍ବର"/>
+<l:template name="Monday" text="ସୋମବାର"/>
+<l:template name="Tuesday" text="ମଙ୍ଗଳବାର"/>
+<l:template name="Wednesday" text="ବୁଧବାର"/>
+<l:template name="Thursday" text="ଗୁରୁବାର"/>
+<l:template name="Friday" text="ଶୁକ୍ରବାର"/>
+<l:template name="Saturday" text="ଶନିବାର"/>
+<l:template name="Sunday" text="ରବିବାର"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="ଜାନ"/>
+<l:template name="Feb" text="ଫେବ"/>
+<l:template name="Mar" text="ମାର"/>
+<l:template name="Apr" text="ଏପ୍ର"/>
+<l:template name="May" text="ମେ"/>
+<l:template name="Jun" text="ଜୁନ"/>
+<l:template name="Jul" text="ଜୁଲ"/>
+<l:template name="Aug" text="ଅଗ"/>
+<l:template name="Sep" text="ସେପ"/>
+<l:template name="Oct" text="ଅକ୍ଟ"/>
+<l:template name="Nov" text="ନଭ"/>
+<l:template name="Dec" text="ଡିସ"/>
+<l:template name="Mon" text="ସୋମ"/>
+<l:template name="Tue" text="ମଂଗଳ"/>
+<l:template name="Wed" text="ବୁଧ"/>
+<l:template name="Thu" text="ଗୁରୁ"/>
+<l:template name="Fri" text="ଶୁକ୍ର"/>
+<l:template name="Sat" text="ଶନି"/>
+<l:template name="Sun" text="ରବି"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 English (UNITED STATES)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/pa.xml b/docs/xsl-generic/common/pa.xml
new file mode 100644
index 00000000..c54bf9dd
--- /dev/null
+++ b/docs/xsl-generic/common/pa.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pa" english-language-name="Punjabi">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/pa.xml -->
+<!-- * -->
+<!-- * E-mail the edited pa.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="ਸਾਰ"/>
+<l:gentext key="abstract" text="ਸਾਰ"/>
+<l:gentext key="Answer" text="ਜ:"/>
+<l:gentext key="answer" text="ਜ:"/>
+<l:gentext key="Appendix" text="ਅੰਤਿਕਾ"/>
+<l:gentext key="appendix" text="ਅੰਤਿਕਾ"/>
+<l:gentext key="Article" text="ਲੇਖ"/>
+<l:gentext key="article" text="ਲੇਖ"/>
+<l:gentext key="Author" text="Author"/>
+<l:gentext key="Bibliography" text="ਪੁਸਤਕ-ਸੂਚੀ"/>
+<l:gentext key="bibliography" text="ਪੁਸਤਕ-ਸੂਚੀ"/>
+<l:gentext key="Book" text="ਪੁਸਤਕ"/>
+<l:gentext key="book" text="ਪੁਸਤਕ"/>
+<l:gentext key="CAUTION" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="Caution" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="caution" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="Chapter" text="ਅਧਿਆਇ"/>
+<l:gentext key="chapter" text="ਅਧਿਆਇ"/>
+<l:gentext key="Colophon" text="ਲੇਖਕਾਂਬਾਰੇ"/>
+<l:gentext key="colophon" text="ਲੇਖਕਾਂਬਾਰੇ"/>
+<l:gentext key="Copyright" text="ਹੱਕਰਾਖਵੇਂਹਨ"/>
+<l:gentext key="copyright" text="ਹੱਕਰਾਖਵੇਂਹਨ"/>
+<l:gentext key="Dedication" text="ਸਮਰਪਿਤ"/>
+<l:gentext key="dedication" text="ਸਮਰਪਿਤ"/>
+<l:gentext key="Edition" text="ਪ੍ਰਕਾਸ਼ਨ"/>
+<l:gentext key="edition" text="ਪ੍ਰਕਾਸ਼ਨ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="ਸਮੀਕਰਨ"/>
+<l:gentext key="equation" text="ਸਮੀਕਰਨ"/>
+<l:gentext key="Example" text="ਉਦਾਹਰਨ"/>
+<l:gentext key="example" text="ਉਦਾਹਰਨ"/>
+<l:gentext key="Figure" text="ਚਿੱਤਰ"/>
+<l:gentext key="figure" text="ਚਿੱਤਰ"/>
+<l:gentext key="Glossary" text="ਸ਼ਬਦਾਵਲੀ"/>
+<l:gentext key="glossary" text="ਸ਼ਬਦਾਵਲੀ"/>
+<l:gentext key="GlossSee" text="ਵੇਖੋ"/>
+<l:gentext key="glosssee" text="ਵੇਖੋ"/>
+<l:gentext key="GlossSeeAlso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="glossseealso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="IMPORTANT" text="ਖਾਸ"/>
+<l:gentext key="important" text="ਖਾਸ"/>
+<l:gentext key="Important" text="ਖਾਸ"/>
+<l:gentext key="Index" text="ਤਤਕਰਾ"/>
+<l:gentext key="index" text="ਤਤਕਰਾ"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ਕਾਨੂੰਨੀਸੂਚਨਾ"/>
+<l:gentext key="legalnotice" text="ਕਾਨੂੰਨੀਸੂਚਨਾ"/>
+<l:gentext key="MsgAud" text="ਪਾਠਕ"/>
+<l:gentext key="msgaud" text="ਪਾਠਕ"/>
+<l:gentext key="MsgLevel" text="ਪੱਧਰ"/>
+<l:gentext key="msglevel" text="ਪੱਧਰ"/>
+<l:gentext key="MsgOrig" text="ਮੁੱਢ"/>
+<l:gentext key="msgorig" text="ਮੁੱਢ"/>
+<l:gentext key="NOTE" text="ਸੂਚਨਾ"/>
+<l:gentext key="Note" text="ਸੂਚਨਾ"/>
+<l:gentext key="note" text="ਸੂਚਨਾ"/>
+<l:gentext key="Part" text="ਭਾਗ"/>
+<l:gentext key="part" text="ਭਾਗ"/>
+<l:gentext key="Preface" text="ਭੂਮਿਕਾ"/>
+<l:gentext key="preface" text="ਭੂਮਿਕਾ"/>
+<l:gentext key="Procedure" text="ਕਾਰਵਾਈ"/>
+<l:gentext key="procedure" text="ਕਾਰਵਾਈ"/>
+<l:gentext key="ProductionSet" text="ਉਤਪਾਦਨ"/>
+<l:gentext key="PubDate" text="Publication Date"/>
+<l:gentext key="pubdate" text="Publication date"/>
+<l:gentext key="Published" text="ਪ੍ਰਕਾਸ਼ਿਤ"/>
+<l:gentext key="published" text="ਪ੍ਰਕਾਸ਼ਿਤ"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ਸ:"/>
+<l:gentext key="question" text="ਸ:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="ਹਵਾਲਾ"/>
+<l:gentext key="reference" text="ਹਵਾਲਾ"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="ਨਾਂ"/>
+<l:gentext key="refname" text="ਨਾਂ"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="ਖੁਲਾਸਾ"/>
+<l:gentext key="refsynopsisdiv" text="ਖੁਲਾਸਾ"/>
+<l:gentext key="RevHistory" text="ਸੁਧਾਈਅਤੀਤ"/>
+<l:gentext key="revhistory" text="ਸੁਧਾਈਅਤੀਤ"/>
+<l:gentext key="revision" text="ਸੁਧਾਈ"/>
+<l:gentext key="Revision" text="ਸੁਧਾਈ"/>
+<l:gentext key="sect1" text="ਹਿੱਸਾ"/>
+<l:gentext key="sect2" text="ਹਿੱਸਾ"/>
+<l:gentext key="sect3" text="ਹਿੱਸਾ"/>
+<l:gentext key="sect4" text="ਹਿੱਸਾ"/>
+<l:gentext key="sect5" text="ਹਿੱਸਾ"/>
+<l:gentext key="section" text="ਹਿੱਸਾ"/>
+<l:gentext key="Section" text="ਹਿੱਸਾ"/>
+<l:gentext key="see" text="ਵੇਖੋ"/>
+<l:gentext key="See" text="ਵੇਖੋ"/>
+<l:gentext key="seealso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="Seealso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="SeeAlso" text="ਇਹਵੀਵੇਖੋ"/>
+<l:gentext key="set" text="ਨਿਰਧਾਰਿਤ"/>
+<l:gentext key="Set" text="ਨਿਰਧਾਰਿਤ"/>
+<l:gentext key="setindex" text="ਤਤਕਰਾਨਿਰਧਾਰਨ"/>
+<l:gentext key="SetIndex" text="ਤਤਕਰਾਨਿਰਧਾਰਨ"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="ਬਾਹੀ"/>
+<l:gentext key="step" text="ਪਗ਼"/>
+<l:gentext key="Step" text="ਪਗ਼"/>
+<l:gentext key="table" text="ਸਾਰਣੀ"/>
+<l:gentext key="Table" text="ਸਾਰਣੀ"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="ਸੰਕੇਤ"/>
+<l:gentext key="TIP" text="ਸੰਕੇਤ"/>
+<l:gentext key="Tip" text="ਸੰਕੇਤ"/>
+<l:gentext key="Warning" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="warning" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="WARNING" text="ਸਾਵਧਾਨ"/>
+<l:gentext key="and" text="ਅਤੇ"/>
+<l:gentext key="by" text="ਲਈ"/>
+<l:gentext key="Edited" text="ਸੰਪਾਦਨ"/>
+<l:gentext key="edited" text="ਸੰਪਾਦਨ"/>
+<l:gentext key="Editedby" text="ਸੰਪਾਦਨਕੀਤਾ"/>
+<l:gentext key="editedby" text="ਸੰਪਾਦਨਕੀਤਾ"/>
+<l:gentext key="in" text="ਵਿੱਚ"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="ਨਾ-ਮੌਜੂਦਾਇਕਾਈ"/>
+<l:gentext key="notes" text="ਸੂਚਨਾ"/>
+<l:gentext key="Notes" text="ਸੂਚਨਾ"/>
+<l:gentext key="Pgs" text="ਸਫ਼ੇ"/>
+<l:gentext key="pgs" text="ਸਫ਼ੇ"/>
+<l:gentext key="Revisedby" text="ਸੁਧਾਈਕੀਤੀ:"/>
+<l:gentext key="revisedby" text="ਸੁਧਾਈਕੀਤੀ:"/>
+<l:gentext key="TableNotes" text="ਸੂਚਨਾ"/>
+<l:gentext key="tablenotes" text="ਸੂਚਨਾ"/>
+<l:gentext key="TableofContents" text="ਭਾਗਸਾਰਣੀ"/>
+<l:gentext key="tableofcontents" text="ਭਾਗਸਾਰਣੀ"/>
+<l:gentext key="unexpectedelementname" text="ਨਾ-ਲੋੜੀਦਾਇਕਾਈਨਾਂ"/>
+<l:gentext key="unsupported" text="ਨਾ-ਸਹਾਇਕ"/>
+<l:gentext key="xrefto" text="xrefto"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="ਸਮੀਕਰਨਸੂਚੀ"/>
+<l:gentext key="ListofEquations" text="ਸਮੀਕਰਨਸੂਚੀ"/>
+<l:gentext key="ListofExamples" text="ਉਦਾਹਰਨਸੂਚੀ"/>
+<l:gentext key="listofexamples" text="ਉਦਾਹਰਨਸੂਚੀ"/>
+<l:gentext key="ListofFigures" text="ਚਿੱਤਰਸੂਚੀ"/>
+<l:gentext key="listoffigures" text="ਚਿੱਤਰਸੂਚੀ"/>
+<l:gentext key="ListofProcedures" text="ਕਾਰਵਾਈਸੂਚੀ"/>
+<l:gentext key="listofprocedures" text="ਕਾਰਵਾਈਸੂਚੀ"/>
+<l:gentext key="listoftables" text="ਸਾਰਣੀਸੂਚੀ"/>
+<l:gentext key="ListofTables" text="ਸਾਰਣੀਸੂਚੀ"/>
+<l:gentext key="ListofUnknown" text="ਅਣਜਾਣਸੂਚੀ"/>
+<l:gentext key="listofunknown" text="ਅਣਜਾਣਸੂਚੀ"/>
+<l:gentext key="nav-home" text="ਘਰ"/>
+<l:gentext key="nav-next" text="ਅੱਗੇ"/>
+<l:gentext key="nav-next-sibling" text="ਤੇਜ਼ਅੱਗੇ"/>
+<l:gentext key="nav-prev" text="ਪਿੱਛੇ"/>
+<l:gentext key="nav-prev-sibling" text="ਤੇਜ਼ਪਿੱਛੇ"/>
+<l:gentext key="nav-up" text="ਉੱਪਰ"/>
+<l:gentext key="nav-toc" text="ਸਾਰਣੀ"/>
+<l:gentext key="Draft" text="ਡਰਾਫਟ"/>
+<l:gentext key="above" text="ਉੱਪਰ"/>
+<l:gentext key="below" text="ਹੇਠਾਂ"/>
+<l:gentext key="sectioncalled" text="ਭਾਗਕਹਿੰਦੇਨੇ"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ਅੰਤਿਕਾ %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="ਅਧਿਆਇ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ਸਮੀਕਰਨ %n. %t"/>
+<l:template name="example" text="ਉਦਾਹਰਨ %n. %t"/>
+<l:template name="figure" text="ਚਿੱਤਰ %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ਭਾਗ %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ਕਾਰਵਾਈ %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ਉਤਪਾਦਨ %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ਸਾਰਣੀ %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ਅੰਤਿਕਾ %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="ਅਧਿਆਇ %n. %t"/>
+<l:template name="part" text="ਭਾਗ %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ਸ: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ਸ: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="refsection" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="refsect1" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="refsect2" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="refsect3" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="sect1" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="sect2" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="sect3" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="sect4" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="sect5" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="section" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="simplesect" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ਜ: %n"/>
+<l:template name="appendix" text="ਅੰਤਿਕਾ %n"/>
+<l:template name="bridgehead" text="ਹਿੱਸਾ %n"/>
+<l:template name="chapter" text="ਅਧਿਆਇ %n"/>
+<l:template name="equation" text="ਸਮੀਕਰਨ %n"/>
+<l:template name="example" text="ਉਦਾਹਰਨ %n"/>
+<l:template name="figure" text="ਚਿੱਤਰ %n"/>
+<l:template name="part" text="ਭਾਗ %n"/>
+<l:template name="procedure" text="ਕਾਰਵਾਈ %n"/>
+<l:template name="productionset" text="ਉਤਪਾਦਨ %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="ਸ: %n"/>
+<l:template name="question" text="ਸ: %n"/>
+<l:template name="sect1" text="ਹਿੱਸਾ %n"/>
+<l:template name="sect2" text="ਹਿੱਸਾ %n"/>
+<l:template name="sect3" text="ਹਿੱਸਾ %n"/>
+<l:template name="sect4" text="ਹਿੱਸਾ %n"/>
+<l:template name="sect5" text="ਹਿੱਸਾ %n"/>
+<l:template name="section" text="ਹਿੱਸਾ %n"/>
+<l:template name="table" text="ਸਾਰਣੀ %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ਅੰਤਿਕਾ %n, %t"/>
+<l:template name="bridgehead" text="ਹਿੱਸਾ %n, “%t”"/>
+<l:template name="chapter" text="ਅਧਿਆਇ %n, %t"/>
+<l:template name="equation" text="ਸਮੀਕਰਨ %n, “%t”"/>
+<l:template name="example" text="ਉਦਾਹਰਨ %n, “%t”"/>
+<l:template name="figure" text="ਚਿੱਤਰ %n, “%t”"/>
+<l:template name="part" text="ਭਾਗ %n, “%t”"/>
+<l:template name="procedure" text="ਕਾਰਵਾਈ %n, “%t”"/>
+<l:template name="productionset" text="ਉਤਪਾਦਨ %n, “%t”"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%t”"/>
+<l:template name="refsect1" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="refsect2" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="refsect3" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="refsection" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="sect1" text="ਹਿੱਸਾ %n, “%t”"/>
+<l:template name="sect2" text="ਹਿੱਸਾ %n, “%t”"/>
+<l:template name="sect3" text="ਹਿੱਸਾ %n, “%t”"/>
+<l:template name="sect4" text="ਹਿੱਸਾ %n, “%t”"/>
+<l:template name="sect5" text="ਹਿੱਸਾ %n, “%t”"/>
+<l:template name="section" text="ਹਿੱਸਾ %n, “%t”"/>
+<l:template name="simplesect" text="ਭਾਗਕਹਿੰਦੇਨੇ “%t”"/>
+<l:template name="table" text="ਸਾਰਣੀ %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ਅਤੇ "/>
+<l:template name="seplast" text=", ਅਤੇ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ਵੇਖੋ %t"/>
+<l:template name="seealso" text="ਇਹਵੀਵੇਖੋ %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ਪਾਠਕ: "/>
+<l:template name="MsgLevel" text="ਪੱਧਰ: "/>
+<l:template name="MsgOrig" text="ਮੁੱਢ: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January"/>
+<l:template name="February" text="February"/>
+<l:template name="March" text="March"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="May"/>
+<l:template name="June" text="June"/>
+<l:template name="July" text="July"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="October"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="Monday"/>
+<l:template name="Tuesday" text="Tuesday"/>
+<l:template name="Wednesday" text="Wednesday"/>
+<l:template name="Thursday" text="Thursday"/>
+<l:template name="Friday" text="Friday"/>
+<l:template name="Saturday" text="Saturday"/>
+<l:template name="Sunday" text="Sunday"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Mon"/>
+<l:template name="Tue" text="Tue"/>
+<l:template name="Wed" text="Wed"/>
+<l:template name="Thu" text="Thu"/>
+<l:template name="Fri" text="Fri"/>
+<l:template name="Sat" text="Sat"/>
+<l:template name="Sun" text="Sun"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0446 Punjabi"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/pi.xsl b/docs/xsl-generic/common/pi.xsl
new file mode 100644
index 00000000..bab86644
--- /dev/null
+++ b/docs/xsl-generic/common/pi.xsl
@@ -0,0 +1,346 @@
+<?xml version='1.0'?>
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:date="http://exslt.org/dates-and-times"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc date exsl"
+ extension-element-prefixes="date exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: pi.xsl 7107 2007-07-22 10:22:06Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns=""><info><title>Common Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 7107 2007-07-22 10:22:06Z xmldoc $
+ </releaseinfo>
+ </info>
+ <partintro id="partintro">
+ <title>Introduction</title>
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the
+ “common” part of the DocBook XSL stylesheets.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific “exceptions” to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+<doc:pi name="dbchoice_choice" xmlns="">
+ <refpurpose>Generates a localized choice separator</refpurpose>
+ <refdescription id="select.choice.separator-desc">
+ <para>Use the <tag class="xmlpi">dbchoice choice</tag> PI to
+ generate an appropriate localized “choice” separator (for
+ example, <literal>and</literal> or <literal>or</literal>)
+ before the final item in an inline <tag>simplelist</tag></para>
+ <warning>
+ <para>This PI is a less-than-ideal hack; support for it may
+ disappear in the future (particularly if and when a more
+ appropriate means for marking up "choice" lists becomes
+ available in DocBook).</para>
+ </warning>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbchoice choice="and"|"or"|<replaceable>string</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>choice="and"</term>
+ <listitem>
+ <para>generates a localized <literal>and</literal> separator</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>choice="or"</term>
+ <listitem>
+ <para>generates a localized <literal>or</literal> separator</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>choice="<replaceable>string</replaceable>"</term>
+ <listitem>
+ <para>generates a literal <replaceable>string</replaceable> separator</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbchoice_choice">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbchoice')"/>
+ <xsl:with-param name="attribute">choice</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbtimestamp" xmlns="">
+ <refpurpose>Inserts a date timestamp</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbtimestamp</tag> PI at any point in a
+ source document to cause a date timestamp (a formatted
+ string representing the current date and time) to be
+ inserted in output of the document.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbtimestamp format="<replaceable>formatstring</replaceable>" [padding="0"|"1"]</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>format="<replaceable>formatstring</replaceable>"</term>
+ <listitem>
+ <para>Specifies format in which the date and time are
+ output</para>
+ <note>
+ <para>For details of the content of the format string,
+ see <link role="tcg" xlink:href="Datetime.html"
+ >Date and time</link>.</para>
+ </note>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>padding="0"|"1"</term>
+ <listitem>
+ <para>Specifies padding behavior; if non-zero, padding is is added</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbtimestamp">
+ <xsl:variable name="format">
+ <xsl:variable name="pi-format">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute">format</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$pi-format != ''">
+ <xsl:value-of select="$pi-format"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime'"/>
+ <xsl:with-param name="name" select="'format'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="padding">
+ <xsl:variable name="pi-padding">
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute">padding</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$pi-padding != ''">
+ <xsl:value-of select="$pi-padding"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="date">
+ <xsl:choose>
+ <xsl:when test="function-available('date:date-time')">
+ <xsl:value-of select="date:date-time()"/>
+ </xsl:when>
+ <xsl:when test="function-available('date:dateTime')">
+ <!-- Xalan quirk -->
+ <xsl:value-of select="date:dateTime()"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="function-available('date:date-time') or
+ function-available('date:dateTime')">
+ <xsl:call-template name="datetime.format">
+ <xsl:with-param name="date" select="$date"/>
+ <xsl:with-param name="format" select="$format"/>
+ <xsl:with-param name="padding" select="$padding"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Timestamp processing requires XSLT processor with EXSLT date support.
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<doc:pi name="dbtex_delims" xmlns="">
+ <refpurpose>Generates delimiters around embedded TeX equations
+ in output</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbtex delims</tag> PI as a
+ child of a <tag>textobject</tag> containing embedded TeX
+ markup, to cause that markup to be surrounded by
+ <literal>$</literal> delimiter characters in output.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbtex delims="no"|"yes"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>dbtex delims="no"|"yes"</term>
+ <listitem>
+ <para>Specifies whether delimiters are output</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>tex.math.delims</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="TexMath.html"
+ >DBTeXMath</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbtex_delims">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbtex')"/>
+ <xsl:with-param name="attribute" select="'delims'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction()" mode="titlepage.mode">
+ <!-- * Als process PIs on title pages -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbtimestamp')">
+ <xsl:call-template name="pi.dbtimestamp"/>
+</xsl:template>
+
+<xsl:template name="datetime.format">
+ <xsl:param name="date"/>
+ <xsl:param name="format"/>
+ <xsl:param name="padding" select="1"/>
+ <xsl:if test="$format != ''">
+ <!-- replace any whitespace in the format string with a non-breaking space -->
+ <xsl:variable name="format-nbsp"
+ select="translate($format,
+ '&#x20;&#x9;&#xd;&#xa;',
+ '&#xa0;&#xa0;&#xa0;&#xa0;')"/>
+ <xsl:variable name="tokenized-format-string">
+ <xsl:call-template name="str.tokenize.keep.delimiters">
+ <xsl:with-param name="string" select="$format-nbsp"/>
+ <xsl:with-param name="delimiters" select="'&#xa0;,./-()[]:'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="function-available('exsl:node-set') or
+ contains(system-property('xsl:vendor'),'Apache Software Foundation')">
+ <!-- We must preserve context node in order to get valid language -->
+ <xsl:variable name="context" select="."/>
+ <xsl:for-each select="exsl:node-set($tokenized-format-string)/node()">
+ <xsl:variable name="token">
+ <xsl:value-of select="."/>
+ </xsl:variable>
+ <!-- Restore context node -->
+ <xsl:for-each select="$context">
+ <xsl:choose>
+ <xsl:when test="$token = 'a'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime-abbrev'"/>
+ <xsl:with-param name="name" select="date:day-abbreviation($date)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$token = 'A'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime-full'"/>
+ <xsl:with-param name="name" select="date:day-name($date)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$token = 'b'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime-abbrev'"/>
+ <xsl:with-param name="name" select="date:month-abbreviation($date)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$token = 'c'">
+ <xsl:value-of select="date:date($date)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="date:time($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'B'">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime-full'"/>
+ <xsl:with-param name="name" select="date:month-name($date)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$token = 'd'">
+ <xsl:if test="$padding = 1 and
+ string-length(date:day-in-month($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:day-in-month($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'H'">
+ <xsl:if test="$padding = 1 and string-length(date:hour-in-day($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:hour-in-day($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'j'">
+ <xsl:value-of select="date:day-in-year($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'm'">
+ <xsl:if test="$padding = 1 and string-length(date:month-in-year($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:month-in-year($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'M'">
+ <xsl:if test="string-length(date:minute-in-hour($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:minute-in-hour($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'S'">
+ <xsl:if test="string-length(date:second-in-minute($date)) = 1">0</xsl:if>
+ <xsl:value-of select="date:second-in-minute($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'U'">
+ <xsl:value-of select="date:week-in-year($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'w'">
+ <xsl:value-of select="date:day-in-week($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'x'">
+ <xsl:value-of select="date:date($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'X'">
+ <xsl:value-of select="date:time($date)"/>
+ </xsl:when>
+ <xsl:when test="$token = 'Y'">
+ <xsl:value-of select="date:year($date)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$token"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Timestamp processing requires an XSLT processor with support
+ for the EXSLT node-set() function.
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/pl.xml b/docs/xsl-generic/common/pl.xml
new file mode 100644
index 00000000..5112a8ee
--- /dev/null
+++ b/docs/xsl-generic/common/pl.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pl" english-language-name="Polish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/pl.xml -->
+<!-- * -->
+<!-- * E-mail the edited pl.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrakt"/>
+<l:gentext key="abstract" text="Abstrakt"/>
+<l:gentext key="Answer" text="Odp:"/>
+<l:gentext key="answer" text="Odp:"/>
+<l:gentext key="Appendix" text="Dodatek"/>
+<l:gentext key="appendix" text="dodatek"/>
+<l:gentext key="Article" text="Artykuł"/>
+<l:gentext key="article" text="Artykuł"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Książka"/>
+<l:gentext key="book" text="Książka"/>
+<l:gentext key="CAUTION" text="PRZYPADEK"/>
+<l:gentext key="Caution" text="Uwaga!"/>
+<l:gentext key="caution" text="Uwaga!"/>
+<l:gentext key="Chapter" text="Rozdział"/>
+<l:gentext key="chapter" text="rozdział"/>
+<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="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Równanie"/>
+<l:gentext key="equation" text="Równanie"/>
+<l:gentext key="Example" text="Przykład"/>
+<l:gentext key="example" text="Przykład"/>
+<l:gentext key="Figure" text="Rysunek"/>
+<l:gentext key="figure" text="Rysunek"/>
+<l:gentext key="Glossary" text="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ż"/>
+<l:gentext key="glossseealso" text="Patrz też"/>
+<l:gentext key="IMPORTANT" text="WAŻNE"/>
+<l:gentext key="important" text="WAŻNE"/>
+<l:gentext key="Important" text="WAŻNE"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="Indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text=""/>
+<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ęść"/>
+<l:gentext key="part" text="Część"/>
+<l:gentext key="Preface" text="Przedmowa"/>
+<l:gentext key="preface" text="Przedmowa"/>
+<l:gentext key="Procedure" text="Procedura"/>
+<l:gentext key="procedure" text="Procedura"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Data wydania"/>
+<l:gentext key="published" text="Data wydania"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Pyt i Odp"/>
+<l:gentext key="qandadiv" text="Pyt i Odp"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<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ły źródłowe"/>
+<l:gentext key="reference" text="Materiały źródłowe"/>
+<l:gentext key="References" text="References" lang="en"/>
+<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="Składnia"/>
+<l:gentext key="refsynopsisdiv" text="Składnia"/>
+<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ż"/>
+<l:gentext key="Seealso" text="Patrz też"/>
+<l:gentext key="SeeAlso" text="Patrz też"/>
+<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="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Podpowiedź"/>
+<l:gentext key="TIP" text="Podpowiedź"/>
+<l:gentext key="Tip" text="Podpowiedź"/>
+<l:gentext key="Warning" text="Ostrzeżenie"/>
+<l:gentext key="warning" text="Ostrzeżenie"/>
+<l:gentext key="WARNING" text="Ostrzeżenie"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text=""/>
+<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ą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ści"/>
+<l:gentext key="tableofcontents" text="Spis treś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="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Spis równań"/>
+<l:gentext key="ListofEquations" text="Spis równań"/>
+<l:gentext key="ListofExamples" text="Spis przykładów"/>
+<l:gentext key="listofexamples" text="Spis przykładów"/>
+<l:gentext key="ListofFigures" text="Spis rysunków"/>
+<l:gentext key="listoffigures" text="Spis rysunków"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<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ści"/>
+<l:gentext key="nav-next" text="Następny"/>
+<l:gentext key="nav-next-sibling" text="Następny rozdział"/>
+<l:gentext key="nav-prev" text="Poprzedni"/>
+<l:gentext key="nav-prev-sibling" text="Poprzedni rozdział"/>
+<l:gentext key="nav-up" text="Początek rozdziału"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="aąbcćdeęfghijklłmnńoòpqrsśtuvwxyzźż"/>
+<l:gentext key="uppercase.alpha" text="AĄBCĆDEĘFGHIJKLŁMNŃOÒPQRSŚTUVWXYZŹŻ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="«"/>
+<l:dingbat key="nestedendquote" text="»"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="ߦ"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatek %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Rozdział %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Równanie %n. %t"/>
+<l:template name="example" text="Przykład %n. %t"/>
+<l:template name="figure" text="Rysunek %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Część %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedura %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="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="Tabela %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatek %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Rozdział %n. %t"/>
+<l:template name="part" text="Część %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Pyt: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Pyt: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="„%t”"/>
+<l:template name="refsection" text="„%t”"/>
+<l:template name="refsect1" text="„%t”"/>
+<l:template name="refsect2" text="„%t”"/>
+<l:template name="refsect3" text="„%t”"/>
+<l:template name="sect1" text="„%t”"/>
+<l:template name="sect2" text="„%t”"/>
+<l:template name="sect3" text="„%t”"/>
+<l:template name="sect4" text="„%t”"/>
+<l:template name="sect5" text="„%t”"/>
+<l:template name="section" text="„%t”"/>
+<l:template name="simplesect" text="„%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Odp: %n"/>
+<l:template name="appendix" text="Dodatek %n"/>
+<l:template name="bridgehead" text="Sekcja %n"/>
+<l:template name="chapter" text="Rozdział %n"/>
+<l:template name="equation" text="Równanie %n"/>
+<l:template name="example" text="Przykład %n"/>
+<l:template name="figure" text="Rysunek %n"/>
+<l:template name="part" text="Część %n"/>
+<l:template name="procedure" text="Procedura %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Pyt i Odp %n"/>
+<l:template name="qandaentry" text="Pyt: %n"/>
+<l:template name="question" text="Pyt: %n"/>
+<l:template name="sect1" text="Sekcja %n"/>
+<l:template name="sect2" text="Sekcja %n"/>
+<l:template name="sect3" text="Sekcja %n"/>
+<l:template name="sect4" text="Sekcja %n"/>
+<l:template name="sect5" text="Sekcja %n"/>
+<l:template name="section" text="Sekcja %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatek %n, %t"/>
+<l:template name="bridgehead" text="Sekcja %n, „%t”"/>
+<l:template name="chapter" text="Rozdział %n, %t"/>
+<l:template name="equation" text="Równanie %n, „%t”"/>
+<l:template name="example" text="Przykład %n, „%t”"/>
+<l:template name="figure" text="Rysunek %n, „%t”"/>
+<l:template name="part" text="Część %n, „%t”"/>
+<l:template name="procedure" text="Procedura %n, „%t”"/>
+<l:template name="productionset" text="Production %n, „%t”"/>
+<l:template name="qandadiv" text="Pyt i Odp %n, „%t”"/>
+<l:template name="refsect1" text="the section called „%t”"/>
+<l:template name="refsect2" text="the section called „%t”"/>
+<l:template name="refsect3" text="the section called „%t”"/>
+<l:template name="refsection" text="the section called „%t”"/>
+<l:template name="sect1" text="Sekcja %n, „%t”"/>
+<l:template name="sect2" text="Sekcja %n, „%t”"/>
+<l:template name="sect3" text="Sekcja %n, „%t”"/>
+<l:template name="sect4" text="Sekcja %n, „%t”"/>
+<l:template name="sect5" text="Sekcja %n, „%t”"/>
+<l:template name="section" text="Sekcja %n, „%t”"/>
+<l:template name="simplesect" text="the section called „%t”"/>
+<l:template name="table" text="Tabela %n, „%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=", i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Patrz %t"/>
+<l:template name="seealso" text="Patrz też %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Odbiorcy: "/>
+<l:template name="MsgLevel" text="Poziom: "/>
+<l:template name="MsgOrig" text="Nadawca: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0415 Polish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/pt.xml b/docs/xsl-generic/common/pt.xml
new file mode 100644
index 00000000..d5b32b1e
--- /dev/null
+++ b/docs/xsl-generic/common/pt.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pt" english-language-name="Portuguese">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/pt.xml -->
+<!-- * -->
+<!-- * E-mail the edited pt.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumo"/>
+<l:gentext key="abstract" text="Resumo"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="R:"/>
+<l:gentext key="Appendix" text="Apêndice"/>
+<l:gentext key="appendix" text="apêndice"/>
+<l:gentext key="Article" text="Artigo"/>
+<l:gentext key="article" text="Artigo"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Livro"/>
+<l:gentext key="book" text="Livro"/>
+<l:gentext key="CAUTION" text="CUIDADO"/>
+<l:gentext key="Caution" text="Cuidado"/>
+<l:gentext key="caution" text="Cuidado"/>
+<l:gentext key="Chapter" text="Capítulo"/>
+<l:gentext key="chapter" text="capítulo"/>
+<l:gentext key="Colophon" text="Ficha Técnica"/>
+<l:gentext key="colophon" text="Ficha Técnica"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedicatória"/>
+<l:gentext key="dedication" text="Dedicatória"/>
+<l:gentext key="Edition" text="Edição"/>
+<l:gentext key="edition" text="Edição"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Equação"/>
+<l:gentext key="equation" text="Equação"/>
+<l:gentext key="Example" text="Exemplo"/>
+<l:gentext key="example" text="Exemplo"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="Figura"/>
+<l:gentext key="Glossary" text="Glossário"/>
+<l:gentext key="glossary" text="Glossário"/>
+<l:gentext key="GlossSee" text="Ver"/>
+<l:gentext key="glosssee" text="Ver"/>
+<l:gentext key="GlossSeeAlso" text="Ver Também"/>
+<l:gentext key="glossseealso" text="Ver Também"/>
+<l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+<l:gentext key="important" text="Importante"/>
+<l:gentext key="Important" text="Importante"/>
+<l:gentext key="Index" text="Índice Remissivo"/>
+<l:gentext key="index" text="Índice Remissivo"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Aviso Legal"/>
+<l:gentext key="legalnotice" text="Aviso Legal"/>
+<l:gentext key="MsgAud" text="Audiência"/>
+<l:gentext key="msgaud" text="Audiência"/>
+<l:gentext key="MsgLevel" text="Nível"/>
+<l:gentext key="msglevel" text="Nível"/>
+<l:gentext key="MsgOrig" text="Origem"/>
+<l:gentext key="msgorig" text="Origem"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="Nota"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="Parte"/>
+<l:gentext key="Preface" text="Prefácio"/>
+<l:gentext key="preface" text="Prefácio"/>
+<l:gentext key="Procedure" text="Procedimento"/>
+<l:gentext key="procedure" text="Procedimento"/>
+<l:gentext key="ProductionSet" text="Produção"/>
+<l:gentext key="PubDate" text="Editado"/>
+<l:gentext key="pubdate" text="Editado"/>
+<l:gentext key="Published" text="Publicado"/>
+<l:gentext key="published" text="Publicado"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="P &amp; R"/>
+<l:gentext key="qandadiv" text="P &amp; R"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="P:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referência"/>
+<l:gentext key="reference" text="Referência"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nome"/>
+<l:gentext key="refname" text="Nome"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Sinopse"/>
+<l:gentext key="refsynopsisdiv" text="Sinopse"/>
+<l:gentext key="RevHistory" text="Historial de Revisões"/>
+<l:gentext key="revhistory" text="Historial de Revisões"/>
+<l:gentext key="revision" text="Revisão"/>
+<l:gentext key="Revision" text="Revisão"/>
+<l:gentext key="sect1" text="Secção"/>
+<l:gentext key="sect2" text="Secção"/>
+<l:gentext key="sect3" text="Secção"/>
+<l:gentext key="sect4" text="Secção"/>
+<l:gentext key="sect5" text="Secção"/>
+<l:gentext key="section" text="secção"/>
+<l:gentext key="Section" text="Secção"/>
+<l:gentext key="see" text="Ver"/>
+<l:gentext key="See" text="Ver"/>
+<l:gentext key="seealso" text="Ver Também"/>
+<l:gentext key="Seealso" text="ver também"/>
+<l:gentext key="SeeAlso" text="Ver Também"/>
+<l:gentext key="set" text="Conjunto"/>
+<l:gentext key="Set" text="Conjunto"/>
+<l:gentext key="setindex" text="Índice de Conjuntos"/>
+<l:gentext key="SetIndex" text="Índice de Conjuntos"/>
+<l:gentext key="Sidebar" text="Barra Lateral"/>
+<l:gentext key="sidebar" text="barra lateral"/>
+<l:gentext key="step" text="passo"/>
+<l:gentext key="Step" text="Passo"/>
+<l:gentext key="table" text="Tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Dica"/>
+<l:gentext key="TIP" text="DICA"/>
+<l:gentext key="Tip" text="Dica"/>
+<l:gentext key="Warning" text="Atenção"/>
+<l:gentext key="warning" text="Atenção"/>
+<l:gentext key="WARNING" text="ATENÇÃO"/>
+<l:gentext key="and" text="e"/>
+<l:gentext key="by" text="por"/>
+<l:gentext key="Edited" text="Editado"/>
+<l:gentext key="edited" text="Editado"/>
+<l:gentext key="Editedby" text="Editado por"/>
+<l:gentext key="editedby" text="Editado por"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="elemento não existente"/>
+<l:gentext key="notes" text="Notas"/>
+<l:gentext key="Notes" text="Notas"/>
+<l:gentext key="Pgs" text="Páginas"/>
+<l:gentext key="pgs" text="Páginas"/>
+<l:gentext key="Revisedby" text="Revisto por: "/>
+<l:gentext key="revisedby" text="Revisto por: "/>
+<l:gentext key="TableNotes" text="Notas"/>
+<l:gentext key="tablenotes" text="Notas"/>
+<l:gentext key="TableofContents" text="Índice"/>
+<l:gentext key="tableofcontents" text="Índice"/>
+<l:gentext key="unexpectedelementname" text="Nome de elemento inesperado"/>
+<l:gentext key="unsupported" text="não suportado"/>
+<l:gentext key="xrefto" text="referência cruzada para"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Lista de Equações"/>
+<l:gentext key="ListofEquations" text="Lista de Equações"/>
+<l:gentext key="ListofExamples" text="Lista de Exemplos"/>
+<l:gentext key="listofexamples" text="Lista de Exemplos"/>
+<l:gentext key="ListofFigures" text="Lista de Figuras"/>
+<l:gentext key="listoffigures" text="Lista de Figuras"/>
+<l:gentext key="ListofProcedures" text="Lista de Procedimentos"/>
+<l:gentext key="listofprocedures" text="Lista de Procedimentos"/>
+<l:gentext key="listoftables" text="Lista de Tabelas"/>
+<l:gentext key="ListofTables" text="Lista de Tabelas"/>
+<l:gentext key="ListofUnknown" text="Lista de Desconhecido"/>
+<l:gentext key="listofunknown" text="Lista de Desconhecido"/>
+<l:gentext key="nav-home" text="Início"/>
+<l:gentext key="nav-next" text="Próximo"/>
+<l:gentext key="nav-next-sibling" text="Próxima Parte"/>
+<l:gentext key="nav-prev" text="Anterior"/>
+<l:gentext key="nav-prev-sibling" text="Parte Anterior"/>
+<l:gentext key="nav-up" text="Subir"/>
+<l:gentext key="nav-toc" text="Índice"/>
+<l:gentext key="Draft" text="Rascunho"/>
+<l:gentext key="above" text="acima"/>
+<l:gentext key="below" text="abaixo"/>
+<l:gentext key="sectioncalled" text="a secção chamada"/>
+<l:gentext key="index symbols" text="Símbolos"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equação %n. %t"/>
+<l:template name="example" text="Exemplo %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedimento %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produção %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Pergunta %n"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apêndice %n"/>
+<l:template name="bridgehead" text="Secção %n"/>
+<l:template name="chapter" text="Capítulo %n"/>
+<l:template name="equation" text="Equação %n"/>
+<l:template name="example" text="Exemplo %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedimento %n"/>
+<l:template name="productionset" text="Produção %n"/>
+<l:template name="qandadiv" text="P &amp; R %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Secção %n"/>
+<l:template name="sect2" text="Secção %n"/>
+<l:template name="sect3" text="Secção %n"/>
+<l:template name="sect4" text="Secção %n"/>
+<l:template name="sect5" text="Secção %n"/>
+<l:template name="section" text="Secção %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apêndice %n, %t"/>
+<l:template name="bridgehead" text="Secção %n, “%t”"/>
+<l:template name="chapter" text="Capítulo %n, %t"/>
+<l:template name="equation" text="Equação %n, “%t”"/>
+<l:template name="example" text="Exemplo %n, “%t”"/>
+<l:template name="figure" text="Figura %n, “%t”"/>
+<l:template name="part" text="Parte %n, “%t”"/>
+<l:template name="procedure" text="Procedimento %n, “%t”"/>
+<l:template name="productionset" text="Produção %n, “%t”"/>
+<l:template name="qandadiv" text="P &amp; R %n, “%t”"/>
+<l:template name="refsect1" text="a secção chamada “%t”"/>
+<l:template name="refsect2" text="a secção chamada “%t”"/>
+<l:template name="refsect3" text="a secção chamada “%t”"/>
+<l:template name="refsection" text="a secção chamada “%t”"/>
+<l:template name="sect1" text="Secção %n, “%t”"/>
+<l:template name="sect2" text="Secção %n, “%t”"/>
+<l:template name="sect3" text="Secção %n, “%t”"/>
+<l:template name="sect4" text="Secção %n, “%t”"/>
+<l:template name="sect5" text="Secção %n, “%t”"/>
+<l:template name="section" text="Secção %n, “%t”"/>
+<l:template name="simplesect" text="a secção chamada “%t”"/>
+<l:template name="table" text="Tabela %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" e "/>
+<l:template name="seplast" text=" e "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Ver %t"/>
+<l:template name="seealso" text="Ver Também %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiência: "/>
+<l:template name="MsgLevel" text="Nível: "/>
+<l:template name="MsgOrig" text="Origem: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0816 Portuguese (PORTUGAL)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/pt_br.xml b/docs/xsl-generic/common/pt_br.xml
new file mode 100644
index 00000000..56c1c910
--- /dev/null
+++ b/docs/xsl-generic/common/pt_br.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="pt_br" english-language-name="Portuguese (Brazil)">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/pt_br.xml -->
+<!-- * -->
+<!-- * E-mail the edited pt_br.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Resumo"/>
+<l:gentext key="abstract" text="Resumo"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="R:"/>
+<l:gentext key="Appendix" text="Apêndice"/>
+<l:gentext key="appendix" text="apêndice"/>
+<l:gentext key="Article" text="Artigo"/>
+<l:gentext key="article" text="Artigo"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Livro"/>
+<l:gentext key="book" text="Livro"/>
+<l:gentext key="CAUTION" text="CUIDADO"/>
+<l:gentext key="Caution" text="Cuidado"/>
+<l:gentext key="caution" text="Cuidado"/>
+<l:gentext key="Chapter" text="Capítulo"/>
+<l:gentext key="chapter" text="capítulo"/>
+<l:gentext key="Colophon" text="Considerações finais"/>
+<l:gentext key="colophon" text="Considerações finais"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedicatória"/>
+<l:gentext key="dedication" text="Dedicatória"/>
+<l:gentext key="Edition" text="Edição"/>
+<l:gentext key="edition" text="Edição"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Equação"/>
+<l:gentext key="equation" text="Equação"/>
+<l:gentext key="Example" text="Exemplo"/>
+<l:gentext key="example" text="Exemplo"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="Figura"/>
+<l:gentext key="Glossary" text="Glossário"/>
+<l:gentext key="glossary" text="Glossário"/>
+<l:gentext key="GlossSee" text="Ver"/>
+<l:gentext key="glosssee" text="Ver"/>
+<l:gentext key="GlossSeeAlso" text="Ver Também"/>
+<l:gentext key="glossseealso" text="Ver Também"/>
+<l:gentext key="IMPORTANT" text="IMPORTANTE"/>
+<l:gentext key="important" text="Importante"/>
+<l:gentext key="Important" text="Importante"/>
+<l:gentext key="Index" text="Índice Remissivo"/>
+<l:gentext key="index" text="Índice Remissivo"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Nota Legal"/>
+<l:gentext key="legalnotice" text="Nota Legal"/>
+<l:gentext key="MsgAud" text="Audiência"/>
+<l:gentext key="msgaud" text="Audiência"/>
+<l:gentext key="MsgLevel" text="Nível"/>
+<l:gentext key="msglevel" text="Nível"/>
+<l:gentext key="MsgOrig" text="Origem"/>
+<l:gentext key="msgorig" text="Origem"/>
+<l:gentext key="NOTE" text="NOTA"/>
+<l:gentext key="Note" text="Nota"/>
+<l:gentext key="note" text="Nota"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="Parte"/>
+<l:gentext key="Preface" text="Prefácio"/>
+<l:gentext key="preface" text="Prefácio"/>
+<l:gentext key="Procedure" text="Procedimento"/>
+<l:gentext key="procedure" text="Procedimento"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Data de Publicação"/>
+<l:gentext key="pubdate" text="Data de Publicação"/>
+<l:gentext key="Published" text="Publicado"/>
+<l:gentext key="published" text="Publicado"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="P &amp; R"/>
+<l:gentext key="qandadiv" text="P &amp; R"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="P:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referência"/>
+<l:gentext key="reference" text="Referência"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nome"/>
+<l:gentext key="refname" text="Nome"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Sinopse"/>
+<l:gentext key="refsynopsisdiv" text="Sinopse"/>
+<l:gentext key="RevHistory" text="Histórico de Revisões"/>
+<l:gentext key="revhistory" text="Histórico de Revisões"/>
+<l:gentext key="revision" text="Revisão"/>
+<l:gentext key="Revision" text="Revisão"/>
+<l:gentext key="sect1" text="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ção"/>
+<l:gentext key="Section" text="Seção"/>
+<l:gentext key="see" text="Ver"/>
+<l:gentext key="See" text="Ver"/>
+<l:gentext key="seealso" text="Ver Também"/>
+<l:gentext key="Seealso" text="ver também"/>
+<l:gentext key="SeeAlso" text="Ver Também"/>
+<l:gentext key="set" text="Conjunto"/>
+<l:gentext key="Set" text="Conjunto"/>
+<l:gentext key="setindex" text="Índice do Conjunto"/>
+<l:gentext key="SetIndex" text="Índice do Conjunto"/>
+<l:gentext key="Sidebar" text="Quadro Lateral"/>
+<l:gentext key="sidebar" text="quadro lateral"/>
+<l:gentext key="step" text="passo"/>
+<l:gentext key="Step" text="Passo"/>
+<l:gentext key="table" text="Tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Dica"/>
+<l:gentext key="TIP" text="DICA"/>
+<l:gentext key="Tip" text="Dica"/>
+<l:gentext key="Warning" text="Atenção"/>
+<l:gentext key="warning" text="Atenção"/>
+<l:gentext key="WARNING" text="ATENÇÃO"/>
+<l:gentext key="and" text="e"/>
+<l:gentext key="by" text="por"/>
+<l:gentext key="Edited" text="Editado"/>
+<l:gentext key="edited" text="Editado"/>
+<l:gentext key="Editedby" text="Editado por"/>
+<l:gentext key="editedby" text="Editado por"/>
+<l:gentext key="in" text=""/>
+<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áginas"/>
+<l:gentext key="pgs" text="Páginas"/>
+<l:gentext key="Revisedby" text="Revisado por: "/>
+<l:gentext key="revisedby" text="Revisado por: "/>
+<l:gentext key="TableNotes" text="Notas"/>
+<l:gentext key="tablenotes" text="Notas"/>
+<l:gentext key="TableofContents" text="Índice"/>
+<l:gentext key="tableofcontents" text="Índice"/>
+<l:gentext key="unexpectedelementname" text="Nome de elemento inesperado"/>
+<l:gentext key="unsupported" text="não suportado"/>
+<l:gentext key="xrefto" text="referência para"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Lista de Equações"/>
+<l:gentext key="ListofEquations" text="Lista de Equações"/>
+<l:gentext key="ListofExamples" text="Lista de Exemplos"/>
+<l:gentext key="listofexamples" text="Lista de Exemplos"/>
+<l:gentext key="ListofFigures" text="Lista de Figuras"/>
+<l:gentext key="listoffigures" text="Lista de Figuras"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Lista de Tabelas"/>
+<l:gentext key="ListofTables" text="Lista de Tabelas"/>
+<l:gentext key="ListofUnknown" text="Lista de ???"/>
+<l:gentext key="listofunknown" text="Lista de ???"/>
+<l:gentext key="nav-home" text="Principal"/>
+<l:gentext key="nav-next" text="Próxima"/>
+<l:gentext key="nav-next-sibling" text="Fim"/>
+<l:gentext key="nav-prev" text="Anterior"/>
+<l:gentext key="nav-prev-sibling" text="Início"/>
+<l:gentext key="nav-up" text="Acima"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equação %n. %t"/>
+<l:template name="example" text="Exemplo %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedimento %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t" lang="en"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apêndice %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Capítulo %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s" lang="en"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Apêndice %n"/>
+<l:template name="bridgehead" text="Seção %n"/>
+<l:template name="chapter" text="Capítulo %n"/>
+<l:template name="equation" text="Equação %n"/>
+<l:template name="example" text="Exemplo %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedimento %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="P &amp; R %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Seção %n"/>
+<l:template name="sect2" text="Seção %n"/>
+<l:template name="sect3" text="Seção %n"/>
+<l:template name="sect4" text="Seção %n"/>
+<l:template name="sect5" text="Seção %n"/>
+<l:template name="section" text="Seção %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apêndice %n, %t"/>
+<l:template name="bridgehead" text="Seção %n, “%t”"/>
+<l:template name="chapter" text="Capítulo %n, %t"/>
+<l:template name="equation" text="Equação %n, “%t”"/>
+<l:template name="example" text="Exemplo %n, “%t”"/>
+<l:template name="figure" text="Figura %n, “%t”"/>
+<l:template name="part" text="Parte %n, “%t”"/>
+<l:template name="procedure" text="Procedimento %n, “%t”"/>
+<l:template name="productionset" text="Production %n, “%t”"/>
+<l:template name="qandadiv" text="P &amp; R %n, “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="sect1" text="Seção %n, “%t”"/>
+<l:template name="sect2" text="Seção %n, “%t”"/>
+<l:template name="sect3" text="Seção %n, “%t”"/>
+<l:template name="sect4" text="Seção %n, “%t”"/>
+<l:template name="sect5" text="Seção %n, “%t”"/>
+<l:template name="section" text="Seção %n, “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+<l:template name="table" text="Tabela %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" e "/>
+<l:template name="seplast" text=", e "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Ver %t"/>
+<l:template name="seealso" text="Ver Também %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audiência: "/>
+<l:template name="MsgLevel" text="Nível: "/>
+<l:template name="MsgOrig" text="Origem: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0416 Portuguese (BRAZIL)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/refentry.xml b/docs/xsl-generic/common/refentry.xml
new file mode 100644
index 00000000..c5e6776b
--- /dev/null
+++ b/docs/xsl-generic/common/refentry.xml
@@ -0,0 +1,781 @@
+<?xml version="1.0"?>
+
+<reference xml:id="refentry">
+ <info>
+ <title>Common » Refentry Metadata Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: refentry.xsl 7056 2007-07-17 13:56:09Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the “refentry
+ metadata” templates in the DocBook XSL Stylesheets.</para>
+
+
+<para>This is not intended to be user documentation. It is provided
+ for developers writing customization layers for the stylesheets.</para>
+
+ <note>
+
+<para>Currently, only the manpages stylesheets make use of these
+ templates. They are, however, potentially useful elsewhere.</para>
+
+ </note>
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.metadata">
+<refnamediv>
+<refname>get.refentry.metadata</refname>
+<refpurpose>Gathers metadata from a refentry and its ancestors</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.metadata"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>Reference documentation for particular commands, functions,
+ etc., is sometimes viewed in isolation from its greater "context". For
+ example, users view Unix man pages as, well, individual pages, not as
+ part of a "book" of some kind. Therefore, it is sometimes necessary to
+ embed "context" information in output for each <tag>refentry</tag>.</para>
+
+
+
+<para>However, one problem is that different users mark up that
+ context information in different ways. Often (usually), the
+ context information is not actually part of the content of the
+ <tag>refentry</tag> itself, but instead part of the content of a
+ parent or ancestor element to the the <tag>refentry</tag>. And
+ even then, DocBook provides a variety of elements that users might
+ potentially use to mark up the same kind of information. One user
+ might use the <tag>productnumber</tag> element to mark up version
+ information about a particular product, while another might use
+ the <tag>releaseinfo</tag> element.</para>
+
+
+
+<para>Taking all that in mind, the
+ <function>get.refentry.metadata</function> template tries to gather
+ metadata from a <tag>refentry</tag> element and its ancestor
+ elements in an intelligent and user-configurable way. The basic
+ mechanism used in the XPath expressions throughout this stylesheet
+ is to select the relevant metadata from the *info element that is
+ closest to the actual <tag>refentry</tag> – either on the
+ <tag>refentry</tag> itself, or on its nearest ancestor.</para>
+
+
+ <note>
+
+<para>The <function>get.refentry.metadata</function>
+ template is actually just sort of a "driver" template; it
+ calls other templates that do the actual data collection,
+ then returns the data as a set.</para>
+
+ </note>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing user preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a node set with the following elements. The
+ descriptions are verbatim from the <literal>man(7)</literal> man
+ page.
+
+<variablelist>
+ <varlistentry>
+ <term>title</term>
+ <listitem>
+
+<para>the title of the man page (e.g., <literal>MAN</literal>)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>section</term>
+ <listitem>
+
+<para>the section number the man page should be placed in (e.g.,
+ <literal>7</literal>)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>date</term>
+ <listitem>
+
+<para>the date of the last revision</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>source</term>
+ <listitem>
+
+<para>the source of the command</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>manual</term>
+ <listitem>
+
+<para>the title of the manual (e.g., <citetitle>Linux
+ Programmer's Manual</citetitle>)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.title">
+<refnamediv>
+<refname>get.refentry.title</refname>
+<refpurpose>Gets title metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.title"&gt;
+&lt;xsl:param name="refname"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ title of the man page (e.g., <literal>MAN</literal>). This differs
+ from <tag>refname</tag> in that, if the <tag>refentry</tag> has a
+ <tag>refentrytitle</tag>, we use that as the <tag>title</tag>;
+ otherwise, we just use first <tag>refname</tag> in the first
+ <tag>refnamediv</tag> in the source.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>title</tag> node.</para>
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.section">
+<refnamediv>
+<refname>get.refentry.section</refname>
+<refpurpose>Gets section metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.section"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="quiet" select="0"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ section number the man page should be placed in (e.g.,
+ <literal>7</literal>)". If we do not find a <tag>manvolnum</tag>
+ specified in the source, and we find that the <tag>refentry</tag> is
+ for a function, we use the section number <literal>3</literal>
+ ["Library calls (functions within program libraries)"]; otherwise, we
+ default to using <literal>1</literal> ["Executable programs or shell
+ commands"].</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>quiet</term>
+ <listitem>
+
+<para>If non-zero, no "missing" message is emitted</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a string representing a section number.</para>
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.date">
+<refnamediv>
+<refname>get.refentry.date</refname>
+<refpurpose>Gets date metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.date"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ date of the last revision". If we cannot find a date in the source, we
+ generate one.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>date</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.source">
+<refnamediv>
+<refname>get.refentry.source</refname>
+<refpurpose>Gets source metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.source"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ source of the command", and provides the following examples:
+
+<itemizedlist>
+ <listitem>
+
+<para>For binaries, use something like: GNU, NET-2, SLS
+ Distribution, MCC Distribution.</para>
+
+ </listitem>
+ <listitem>
+
+<para>For system calls, use the version of the kernel that you are
+ currently looking at: Linux 0.99.11.</para>
+
+ </listitem>
+ <listitem>
+
+<para>For library calls, use the source of the function: GNU, BSD
+ 4.3, Linux DLL 4.4.1.</para>
+
+ </listitem>
+ </itemizedlist>
+
+ </para>
+
+
+
+<para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "source", except that <literal>solbook(5)</literal> names it
+ "software" and describes it like this:
+ <blockquote>
+
+<para>This is the name of the software product that the topic
+ discussed on the reference page belongs to. For example UNIX
+ commands are part of the <literal>SunOS x.x</literal>
+ release.</para>
+
+ </blockquote>
+ </para>
+
+
+
+<para>In practice, there are many pages that simply have a version
+ number in the "source" field. So, it looks like what we have is a
+ two-part field,
+ <replaceable>Name</replaceable> <replaceable>Version</replaceable>,
+ where:
+
+<variablelist>
+ <varlistentry>
+ <term>Name</term>
+ <listitem>
+
+<para>product name (e.g., BSD) or org. name (e.g., GNU)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Version</term>
+ <listitem>
+
+<para>version name</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ Each part is optional. If the <replaceable>Name</replaceable> is a
+ product name, then the <replaceable>Version</replaceable> is probably
+ the version of the product. Or there may be no
+ <replaceable>Name</replaceable>, in which case, if there is a
+ <replaceable>Version</replaceable>, it is probably the version of the
+ item itself, not the product it is part of. Or, if the
+ <replaceable>Name</replaceable> is an organization name, then there
+ probably will be no <replaceable>Version</replaceable>.
+ </para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>source</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.source.name">
+<refnamediv>
+<refname>get.refentry.source.name</refname>
+<refpurpose>Gets source-name metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.source.name"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>A "source name" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable> <replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "source name" data.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.version">
+<refnamediv>
+<refname>get.refentry.version</refname>
+<refpurpose>Gets version metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.version"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>A "version" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable> <replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "version" data.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.manual">
+<refnamediv>
+<refname>get.refentry.manual</refname>
+<refpurpose>Gets source metadata for a refentry</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.manual"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="prefs"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The <literal>man(7)</literal> man page describes this as "the
+ title of the manual (e.g., <citetitle>Linux Programmer's
+ Manual</citetitle>)". Here are some examples from existing man pages:
+
+<itemizedlist>
+ <listitem>
+
+<para><citetitle>dpkg utilities</citetitle>
+ (<command>dpkg-name</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>User Contributed Perl Documentation</citetitle>
+ (<command>GET</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>GNU Development Tools</citetitle>
+ (<command>ld</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>Emperor Norton Utilities</citetitle>
+ (<command>ddate</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>Debian GNU/Linux manual</citetitle>
+ (<command>faked</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>GIMP Manual Pages</citetitle>
+ (<command>gimp</command>)</para>
+
+ </listitem>
+ <listitem>
+
+<para><citetitle>KDOC Documentation System</citetitle>
+ (<command>qt2kdoc</command>)</para>
+
+ </listitem>
+ </itemizedlist>
+
+ </para>
+
+
+
+<para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "manual", except that <literal>solbook(5)</literal> names it
+ "sectdesc" and describes it like this:
+ <blockquote>
+
+<para>This is the section title of the reference page; for
+ example <literal>User Commands</literal>.</para>
+
+ </blockquote>
+ </para>
+
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+
+<para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>manual</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.refentry.metadata.prefs">
+<refnamediv>
+<refname>get.refentry.metadata.prefs</refname>
+<refpurpose>Gets user preferences for refentry metadata gathering</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.refentry.metadata.prefs"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The DocBook XSL stylesheets include several user-configurable
+ global stylesheet parameters for controlling <tag>refentry</tag>
+ metadata gathering. Those parameters are not read directly by the
+ other <tag>refentry</tag> metadata-gathering
+ templates. Instead, they are read only by the
+ <function>get.refentry.metadata.prefs</function> template,
+ which assembles them into a structure that is then passed to
+ the other <tag>refentry</tag> metadata-gathering
+ templates.</para>
+
+
+
+<para>So the, <function>get.refentry.metadata.prefs</function>
+ template is the only interface to collecting stylesheet parameters for
+ controlling <tag>refentry</tag> metadata gathering.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<para>There are no local parameters for this template; however, it
+ does rely on a number of global parameters.</para>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a <tag>manual</tag> node.</para>
+
+ </refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.set.refentry.metadata">
+<refnamediv>
+<refname>set.refentry.metadata</refname>
+<refpurpose>Sets content of a refentry metadata item</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="set.refentry.metadata"&gt;
+&lt;xsl:param name="refname"/&gt;
+&lt;xsl:param name="info"/&gt;
+&lt;xsl:param name="contents"/&gt;
+&lt;xsl:param name="context"/&gt;
+&lt;xsl:param name="preferred"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The <function>set.refentry.metadata</function> template is
+ called each time a suitable source element is found for a certain
+ metadata field.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+
+<para>The first <tag>refname</tag> in the refentry</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+
+<para>A single *info node that contains the selected source element.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>contents</term>
+ <listitem>
+
+<para>A node containing the selected source element.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>context</term>
+ <listitem>
+
+<para>A string describing the metadata context in which the
+ <function>set.refentry.metadata</function> template was
+ called: either "date", "source", "version", or "manual".</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns formatted contents of a selected source element.</para>
+</refsect1></refentry>
+</reference>
+
diff --git a/docs/xsl-generic/common/refentry.xsl b/docs/xsl-generic/common/refentry.xsl
new file mode 100644
index 00000000..75bc84b0
--- /dev/null
+++ b/docs/xsl-generic/common/refentry.xsl
@@ -0,0 +1,1277 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:date="http://exslt.org/dates-and-times"
+ exclude-result-prefixes="doc date"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: refentry.xsl 7056 2007-07-17 13:56:09Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<doc:reference xmlns="" xml:id="refentry">
+ <info>
+ <title>Common » Refentry Metadata Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: refentry.xsl 7056 2007-07-17 13:56:09Z xmldoc $
+ </releaseinfo>
+ </info>
+ <!-- * yes, partintro is a valid child of a reference... -->
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the “refentry
+ metadata” templates in the DocBook XSL Stylesheets.</para>
+ <para>This is not intended to be user documentation. It is provided
+ for developers writing customization layers for the stylesheets.</para>
+ <note>
+ <para>Currently, only the manpages stylesheets make use of these
+ templates. They are, however, potentially useful elsewhere.</para>
+ </note>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.metadata" xmlns="">
+ <refpurpose>Gathers metadata from a refentry and its ancestors</refpurpose>
+ <refdescription id="get.refentry.metadata-desc">
+ <para>Reference documentation for particular commands, functions,
+ etc., is sometimes viewed in isolation from its greater "context". For
+ example, users view Unix man pages as, well, individual pages, not as
+ part of a "book" of some kind. Therefore, it is sometimes necessary to
+ embed "context" information in output for each <tag>refentry</tag>.</para>
+
+ <para>However, one problem is that different users mark up that
+ context information in different ways. Often (usually), the
+ context information is not actually part of the content of the
+ <tag>refentry</tag> itself, but instead part of the content of a
+ parent or ancestor element to the the <tag>refentry</tag>. And
+ even then, DocBook provides a variety of elements that users might
+ potentially use to mark up the same kind of information. One user
+ might use the <tag>productnumber</tag> element to mark up version
+ information about a particular product, while another might use
+ the <tag>releaseinfo</tag> element.</para>
+
+ <para>Taking all that in mind, the
+ <function>get.refentry.metadata</function> template tries to gather
+ metadata from a <tag>refentry</tag> element and its ancestor
+ elements in an intelligent and user-configurable way. The basic
+ mechanism used in the XPath expressions throughout this stylesheet
+ is to select the relevant metadata from the *info element that is
+ closest to the actual <tag>refentry</tag>&#160;– either on the
+ <tag>refentry</tag> itself, or on its nearest ancestor.</para>
+
+ <note>
+ <para>The <function>get.refentry.metadata</function>
+ template is actually just sort of a "driver" template; it
+ calls other templates that do the actual data collection,
+ then returns the data as a set.</para>
+ </note>
+
+ </refdescription>
+ <refparameter id="get.refentry.metadata-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing user preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.metadata-returns">
+ <para>Returns a node set with the following elements. The
+ descriptions are verbatim from the <literal>man(7)</literal> man
+ page.
+ <variablelist>
+ <varlistentry>
+ <term>title</term>
+ <listitem>
+ <para>the title of the man page (e.g., <literal>MAN</literal>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>section</term>
+ <listitem>
+ <para>the section number the man page should be placed in (e.g.,
+ <literal>7</literal>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>date</term>
+ <listitem>
+ <para>the date of the last revision</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>source</term>
+ <listitem>
+ <para>the source of the command</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>manual</term>
+ <listitem>
+ <para>the title of the manual (e.g., <citetitle>Linux
+ Programmer's Manual</citetitle>)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.metadata">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <title>
+ <xsl:call-template name="get.refentry.title">
+ <xsl:with-param name="refname" select="$refname"/>
+ </xsl:call-template>
+ </title>
+ <section>
+ <xsl:call-template name="get.refentry.section">
+ <xsl:with-param name="refname" select="$refname"/>
+ </xsl:call-template>
+ </section>
+ <date>
+ <xsl:call-template name="get.refentry.date">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/DatePrefs"/>
+ </xsl:call-template>
+ </date>
+ <source>
+ <xsl:call-template name="get.refentry.source">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/SourcePrefs"/>
+ </xsl:call-template>
+ </source>
+ <manual>
+ <xsl:call-template name="get.refentry.manual">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/ManualPrefs"/>
+ </xsl:call-template>
+ </manual>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<doc:template name="get.refentry.title" xmlns="">
+ <refpurpose>Gets title metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.title-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ title of the man page (e.g., <literal>MAN</literal>). This differs
+ from <tag>refname</tag> in that, if the <tag>refentry</tag> has a
+ <tag>refentrytitle</tag>, we use that as the <tag>title</tag>;
+ otherwise, we just use first <tag>refname</tag> in the first
+ <tag>refnamediv</tag> in the source.</para>
+ </refdescription>
+ <refparameter id="get.refentry.title-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.title-returns">
+ <para>Returns a <tag>title</tag> node.</para></refreturn>
+</doc:template>
+<xsl:template name="get.refentry.title">
+ <xsl:param name="refname"/>
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:copy>
+ <xsl:apply-templates select="refmeta/refentrytitle/node()"/>
+ </xsl:copy>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$refname"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.section" xmlns="">
+ <refpurpose>Gets section metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.section-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ section number the man page should be placed in (e.g.,
+ <literal>7</literal>)". If we do not find a <tag>manvolnum</tag>
+ specified in the source, and we find that the <tag>refentry</tag> is
+ for a function, we use the section number <literal>3</literal>
+ ["Library calls (functions within program libraries)"]; otherwise, we
+ default to using <literal>1</literal> ["Executable programs or shell
+ commands"].</para>
+ </refdescription>
+ <refparameter id="get.refentry.section-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>quiet</term>
+ <listitem>
+ <para>If non-zero, no "missing" message is emitted</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.section-returns">
+ <para>Returns a string representing a section number.</para></refreturn>
+</doc:template>
+<xsl:template name="get.refentry.section">
+ <xsl:param name="refname"/>
+ <xsl:param name="quiet" select="0"/>
+ <xsl:choose>
+ <xsl:when test="refmeta/manvolnum">
+ <xsl:value-of select="refmeta/manvolnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$quiet = 0">
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manvol</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/refmeta/manvolnum</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manvol</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/manvolnum</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test=".//funcsynopsis">
+ <xsl:if test="$quiet = 0">
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manvol</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Setting man section to 3</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <xsl:text>3</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.date" xmlns="">
+ <refpurpose>Gets date metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.date-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ date of the last revision". If we cannot find a date in the source, we
+ generate one.</para>
+ </refdescription>
+ <refparameter id="get.refentry.date-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.date-returns">
+ <para>Returns a <tag>date</tag> node.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.date">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:variable name="Date">
+ <xsl:choose>
+ <!-- * if profiling is enabled for date, and the date -->
+ <!-- * profile is non-empty, use it -->
+ <xsl:when test="not($prefs/@profileEnabled = 0) and
+ not($prefs/@profile = '')">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@profile"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * either profiling is not enabled for date, or the-->
+ <!-- * date profile is empty, so we need to look for date -->
+ <!-- * in *info -->
+ <xsl:choose>
+ <!-- * look for date or pubdate in *info -->
+ <xsl:when test="$info/date/node()
+ |$info/pubdate/node()">
+ <xsl:apply-templates
+ select="(($info[date])[last()]/date)[1]|
+ (($info[pubdate])[last()]/pubdate)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * found no Date or Pubdate -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="not($Date = '')">
+ <xsl:value-of select="$Date"/>
+ </xsl:when>
+ <!-- * We couldn't find a date, so we generate a date. -->
+ <!-- * And we make it an appropriately localized date. -->
+ <xsl:otherwise>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta date</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no date; using generated date</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta date</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/date</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="datetime.format">
+ <xsl:with-param name="date">
+ <xsl:choose>
+ <xsl:when test="function-available('date:date-time')">
+ <xsl:value-of select="date:date-time()"/>
+ </xsl:when>
+ <xsl:when test="function-available('date:dateTime')">
+ <!-- Xalan quirk -->
+ <xsl:value-of select="date:dateTime()"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="format">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'datetime'"/>
+ <xsl:with-param name="name" select="'format'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.source" xmlns="">
+ <refpurpose>Gets source metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.source-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ source of the command", and provides the following examples:
+ <itemizedlist>
+ <listitem>
+ <para>For binaries, use something like: GNU, NET-2, SLS
+ Distribution, MCC Distribution.</para>
+ </listitem>
+ <listitem>
+ <para>For system calls, use the version of the kernel that you are
+ currently looking at: Linux 0.99.11.</para>
+ </listitem>
+ <listitem>
+ <para>For library calls, use the source of the function: GNU, BSD
+ 4.3, Linux DLL 4.4.1.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "source", except that <literal>solbook(5)</literal> names it
+ "software" and describes it like this:
+ <blockquote>
+ <para>This is the name of the software product that the topic
+ discussed on the reference page belongs to. For example UNIX
+ commands are part of the <literal>SunOS x.x</literal>
+ release.</para>
+ </blockquote>
+ </para>
+
+ <para>In practice, there are many pages that simply have a version
+ number in the "source" field. So, it looks like what we have is a
+ two-part field,
+ <replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>,
+ where:
+ <variablelist>
+ <varlistentry>
+ <term>Name</term>
+ <listitem>
+ <para>product name (e.g., BSD) or org. name (e.g., GNU)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Version</term>
+ <listitem>
+ <para>version name</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ Each part is optional. If the <replaceable>Name</replaceable> is a
+ product name, then the <replaceable>Version</replaceable> is probably
+ the version of the product. Or there may be no
+ <replaceable>Name</replaceable>, in which case, if there is a
+ <replaceable>Version</replaceable>, it is probably the version of the
+ item itself, not the product it is part of. Or, if the
+ <replaceable>Name</replaceable> is an organization name, then there
+ probably will be no <replaceable>Version</replaceable>.
+ </para>
+ </refdescription>
+ <refparameter id="get.refentry.source-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.source-returns">
+ <para>Returns a <tag>source</tag> node.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.source">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:variable name="Name">
+ <xsl:if test="$prefs/Name/@suppress = 0">
+ <xsl:call-template name="get.refentry.source.name">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/Name"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="Version">
+ <xsl:if test="$prefs/Version/@suppress = 0">
+ <xsl:call-template name="get.refentry.version">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param name="prefs" select="$prefs/Version"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- * if we have a Name and/or Version, use either or both -->
+ <!-- * of those, in the form "Name Version" or just "Name" -->
+ <!-- * or just "Version" -->
+ <xsl:when test="not($Name = '') or not($Version = '')">
+ <xsl:choose>
+ <xsl:when test="not($Name = '') and not($Version = '')">
+ <xsl:copy-of select="$Name"/>
+ <xsl:text> </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$Name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$Version"/>
+ </xsl:when>
+ <!-- * if no Name and no Version, use fallback (if any) -->
+ <xsl:when test="not($prefs/@fallback = '')">
+ <xsl:variable name="source.fallback">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@fallback"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="not($source.fallback = '')">
+ <xsl:value-of select="$source.fallback"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no valid fallback for source; leaving empty</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no source fallback specified; leaving empty</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.source.name" xmlns="">
+ <refpurpose>Gets source-name metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.source.name-desc">
+ <para>A "source name" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+ </refdescription>
+ <refparameter id="get.refentry.source.name-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.source.name-returns">
+ <para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "source name" data.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.source.name">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:choose>
+ <!-- * if profiling is enabled for source.name, and the -->
+ <!-- * source.name profile is non-empty, use it -->
+ <xsl:when test="not($prefs/@profileEnabled = 0) and
+ not($prefs/@profile = '')">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@profile"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * either profiling for source.name is not enabled, or-->
+ <!-- * the source.name profile is empty; so we need to look -->
+ <!-- * for a name to use -->
+ <xsl:choose>
+ <xsl:when test="refmeta/refmiscinfo[@class = 'source' or @class = 'software']">
+ <xsl:apply-templates
+ select="refmeta/refmiscinfo[@class = 'source' or @class='software'][1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$info/productname">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[productname])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[productname])[last()]/productname)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/corpname">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[corpname])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[corpname])[last()]/corpname)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/corpcredit">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[corpcredit])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[corpcredit])[last()]/corpcredit)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/corpauthor">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[corpauthor])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[corpauthor])[last()]/corpauthor)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info//orgname">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[//orgname])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[//orgname])[last()]//orgname)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info//publishername">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[//publishername])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[//publishername])[last()]//publishername)[1]"/>
+ <xsl:with-param name="context">source</xsl:with-param>
+ <xsl:with-param name="preferred">productname</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no *info/productname or alternative</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/productname</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/refmeta/refmiscinfo@class=source</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta source</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/refmiscinfo</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.version" xmlns="">
+ <refpurpose>Gets version metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.version-desc">
+ <para>A "version" is one part of a (potentially) two-part
+ <replaceable>Name</replaceable>&#160;<replaceable>Version</replaceable>
+ source field. For more details, see the documentation for the
+ <function>get.refentry.source</function> template.</para>
+ </refdescription>
+ <refparameter id="get.refentry.version-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.version-returns">
+ <para>Depending on what output method is used for the
+ current stylesheet, either returns a text node or possibly an element
+ node, containing "version" data.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.version">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:choose>
+ <!-- * if profiling is enabled for version, and the -->
+ <!-- * version profile is non-empty, use it -->
+ <xsl:when test="not($prefs/@profileEnabled = 0) and
+ not($prefs/@profile = '')">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@profile"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * either profiling for source.name is not enabled, or-->
+ <!-- * the source.name profile is empty; so we need to look -->
+ <!-- * for a name to use -->
+ <xsl:choose>
+ <xsl:when test="refmeta/refmiscinfo[@class = 'version']">
+ <xsl:apply-templates
+ select="refmeta/refmiscinfo[@class = 'version'][1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$info/productnumber">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[productnumber])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[productnumber])[last()]/productnumber)[1]"/>
+ <xsl:with-param name="context">version</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/edition">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[edition])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[edition])[last()]/edition)[1]"/>
+ <xsl:with-param name="context">version</xsl:with-param>
+ <xsl:with-param name="preferred">productnumber</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/releaseinfo">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[releaseinfo])[last()]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[releaseinfo])[last()]/releaseinfo)[1]"/>
+ <xsl:with-param name="context">version</xsl:with-param>
+ <xsl:with-param name="preferred">productnumber</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta version</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no *info/productnumber or alternative</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta version</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/productnumber</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta version</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/refmeta/refmiscinfo@class=version</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta version</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/refmiscinfo</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<doc:template name="get.refentry.manual" xmlns="">
+ <refpurpose>Gets source metadata for a refentry</refpurpose>
+ <refdescription id="get.refentry.manual-desc">
+ <para>The <literal>man(7)</literal> man page describes this as "the
+ title of the manual (e.g., <citetitle>Linux Programmer's
+ Manual</citetitle>)". Here are some examples from existing man pages:
+ <itemizedlist>
+ <listitem>
+ <para><citetitle>dpkg utilities</citetitle>
+ (<command>dpkg-name</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>User Contributed Perl Documentation</citetitle>
+ (<command>GET</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GNU Development Tools</citetitle>
+ (<command>ld</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Emperor Norton Utilities</citetitle>
+ (<command>ddate</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>Debian GNU/Linux manual</citetitle>
+ (<command>faked</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>GIMP Manual Pages</citetitle>
+ (<command>gimp</command>)</para>
+ </listitem>
+ <listitem>
+ <para><citetitle>KDOC Documentation System</citetitle>
+ (<command>qt2kdoc</command>)</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>The <literal>solbook(5)</literal> man page describes
+ something very much like what <literal>man(7)</literal> calls
+ "manual", except that <literal>solbook(5)</literal> names it
+ "sectdesc" and describes it like this:
+ <blockquote>
+ <para>This is the section title of the reference page; for
+ example <literal>User Commands</literal>.</para>
+ </blockquote>
+ </para>
+
+ </refdescription>
+ <refparameter id="get.refentry.manual-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A set of info nodes (from a <tag>refentry</tag>
+ element and its ancestors)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prefs</term>
+ <listitem>
+ <para>A node containing users preferences (from global
+ stylesheet parameters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="get.refentry.manual-returns">
+ <para>Returns a <tag>manual</tag> node.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.manual">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="prefs"/>
+ <xsl:variable name="Manual">
+ <xsl:choose>
+ <!-- * if profiling is enabled for manual, and the manual -->
+ <!-- * profile is non-empty, use it -->
+ <xsl:when test="not($prefs/@profileEnabled = 0) and
+ not($prefs/@profile = '')">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@profile"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="refmeta/refmiscinfo[@class = 'manual' or @class = 'sectdesc']">
+ <xsl:apply-templates
+ select="refmeta/refmiscinfo[@class = 'manual' or @class = 'sectdesc'][1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * only in the case of choosing appropriate -->
+ <!-- * "manual" content do we select the furthest -->
+ <!-- * (first) matching element instead of the -->
+ <!-- * closest (last) matching one -->
+ <xsl:choose>
+ <xsl:when test="ancestor::*/title">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="(ancestor::*[title])[1]"/>
+ <xsl:with-param
+ name="contents"
+ select="(ancestor::*[title])[1]/title"/>
+ <xsl:with-param name="context">manual</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$info/title">
+ <xsl:call-template name="set.refentry.metadata">
+ <xsl:with-param name="refname" select="$refname"/>
+ <xsl:with-param
+ name="info"
+ select="($info[title])[1]"/>
+ <xsl:with-param
+ name="contents"
+ select="(($info[title])[1]/title)[1]"/>
+ <xsl:with-param name="context">manual</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no titled ancestor of refentry</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/refmeta/refmiscinfo@class=manual</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>see http://docbook.sf.net/el/refmiscinfo</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="not($Manual = '')">
+ <xsl:copy-of select="$Manual"/>
+ </xsl:when>
+ <!-- * if no Manual, use contents of specified Fallback (if any) -->
+ <xsl:when test="not($prefs/@fallback = '')">
+ <xsl:variable name="manual.fallback">
+ <xsl:call-template name="evaluate.info.profile">
+ <xsl:with-param name="profile" select="$prefs/@fallback"/>
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="not($manual.fallback = '')">
+ <xsl:value-of select="$manual.fallback"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no valid fallback for manual; leaving empty</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">meta manual</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>no manual fallback specified; leaving empty</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<doc:template name="get.refentry.metadata.prefs" xmlns="">
+ <refpurpose>Gets user preferences for refentry metadata gathering</refpurpose>
+ <refdescription id="get.refentry.metadata.prefs-desc">
+ <para>The DocBook XSL stylesheets include several user-configurable
+ global stylesheet parameters for controlling <tag>refentry</tag>
+ metadata gathering. Those parameters are not read directly by the
+ other <tag>refentry</tag> metadata-gathering
+ templates. Instead, they are read only by the
+ <function>get.refentry.metadata.prefs</function> template,
+ which assembles them into a structure that is then passed to
+ the other <tag>refentry</tag> metadata-gathering
+ templates.</para>
+
+ <para>So the, <function>get.refentry.metadata.prefs</function>
+ template is the only interface to collecting stylesheet parameters for
+ controlling <tag>refentry</tag> metadata gathering.</para>
+ </refdescription>
+ <refparameter id="get.refentry.metadata.prefs-params">
+ <para>There are no local parameters for this template; however, it
+ does rely on a number of global parameters.</para>
+ </refparameter>
+ <refreturn id="get.refentry.metadata.prefs-returns">
+ <para>Returns a <tag>manual</tag> node.</para>
+ </refreturn>
+</doc:template>
+<xsl:template name="get.refentry.metadata.prefs">
+ <DatePrefs>
+ <xsl:attribute name="profile">
+ <xsl:value-of select="$refentry.date.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profileEnabled">
+ <xsl:value-of select="$refentry.date.profile.enabled"/>
+ </xsl:attribute>
+ </DatePrefs>
+ <SourcePrefs>
+ <xsl:attribute name="fallback">
+ <xsl:value-of select="$refentry.source.fallback.profile"/>
+ </xsl:attribute>
+ <Name>
+ <xsl:attribute name="profile">
+ <xsl:value-of select="$refentry.source.name.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profileEnabled">
+ <xsl:value-of select="$refentry.source.name.profile.enabled"/>
+ </xsl:attribute>
+ <xsl:attribute name="suppress">
+ <xsl:value-of select="$refentry.source.name.suppress"/>
+ </xsl:attribute>
+ </Name>
+ <Version>
+ <xsl:attribute name="profile">
+ <xsl:value-of select="$refentry.version.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profileEnabled">
+ <xsl:value-of select="$refentry.version.profile.enabled"/>
+ </xsl:attribute>
+ <xsl:attribute name="suppress">
+ <xsl:value-of select="$refentry.version.suppress"/>
+ </xsl:attribute>
+ </Version>
+ </SourcePrefs>
+ <ManualPrefs>
+ <xsl:attribute name="fallback">
+ <xsl:value-of select="$refentry.manual.fallback.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profile">
+ <xsl:value-of select="$refentry.manual.profile"/>
+ </xsl:attribute>
+ <xsl:attribute name="profileEnabled">
+ <xsl:value-of select="$refentry.manual.profile.enabled"/>
+ </xsl:attribute>
+ </ManualPrefs>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<doc:template name="set.refentry.metadata" xmlns="">
+ <refpurpose>Sets content of a refentry metadata item</refpurpose>
+ <refdescription id="set.refentry.metadata-desc">
+ <para>The <function>set.refentry.metadata</function> template is
+ called each time a suitable source element is found for a certain
+ metadata field.</para>
+ </refdescription>
+ <refparameter id="set.refentry.metadata-params">
+ <variablelist>
+ <varlistentry>
+ <term>refname</term>
+ <listitem>
+ <para>The first <tag>refname</tag> in the refentry</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>info</term>
+ <listitem>
+ <para>A single *info node that contains the selected source element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>contents</term>
+ <listitem>
+ <para>A node containing the selected source element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>context</term>
+ <listitem>
+ <para>A string describing the metadata context in which the
+ <function>set.refentry.metadata</function> template was
+ called: either "date", "source", "version", or "manual".</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="set.refentry.metadata-returns">
+ <para>Returns formatted contents of a selected source element.</para></refreturn>
+</doc:template>
+<xsl:template name="set.refentry.metadata">
+ <xsl:param name="refname"/>
+ <xsl:param name="info"/>
+ <xsl:param name="contents"/>
+ <xsl:param name="context"/>
+ <xsl:param name="preferred"/>
+ <xsl:if test="not($preferred = '')">
+ <xsl:if test="$refentry.meta.get.quietly = 0">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc" select="concat('meta ', $context)"/>
+ <xsl:with-param name="message" select="concat('No ', $preferred)"/>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc" select="concat('meta ', $context)"/>
+ <xsl:with-param name="message">
+ <xsl:text>no refentry/refmeta/refmiscinfo@class=</xsl:text>
+ <xsl:value-of select="$context"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc" select="concat('meta ', $context)"/>
+ <xsl:with-param name="message" select="concat('Using ', local-name($contents))"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="$contents"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/ro.xml b/docs/xsl-generic/common/ro.xml
new file mode 100644
index 00000000..50bd8dc7
--- /dev/null
+++ b/docs/xsl-generic/common/ro.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ro" english-language-name="Romanian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ro.xml -->
+<!-- * -->
+<!-- * E-mail the edited ro.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Rezumat"/>
+<l:gentext key="abstract" text="Rezumat"/>
+<l:gentext key="Answer" text="R:"/>
+<l:gentext key="answer" text="R:"/>
+<l:gentext key="Appendix" text="Anexa"/>
+<l:gentext key="appendix" text="anexa"/>
+<l:gentext key="Article" text="Articol"/>
+<l:gentext key="article" text="Articol"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografie"/>
+<l:gentext key="bibliography" text="Bibliografie"/>
+<l:gentext key="Book" text="Carte"/>
+<l:gentext key="book" text="Carte"/>
+<l:gentext key="CAUTION" text="ATENȚIE"/>
+<l:gentext key="Caution" text="Atenție"/>
+<l:gentext key="caution" text="Atenție"/>
+<l:gentext key="Chapter" text="Cap."/>
+<l:gentext key="chapter" text="cap."/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedicație"/>
+<l:gentext key="dedication" text="Dedicație"/>
+<l:gentext key="Edition" text="Ediție"/>
+<l:gentext key="edition" text="Ediție"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="ecuația"/>
+<l:gentext key="equation" text="ecuația"/>
+<l:gentext key="Example" text="Exemplu"/>
+<l:gentext key="example" text="Exemplu"/>
+<l:gentext key="Figure" text="Fig."/>
+<l:gentext key="figure" text="Fig."/>
+<l:gentext key="Glossary" text="Glosar"/>
+<l:gentext key="glossary" text="Glosar"/>
+<l:gentext key="GlossSee" text="Vezi"/>
+<l:gentext key="glosssee" text="Vezi"/>
+<l:gentext key="GlossSeeAlso" text="Vezi și"/>
+<l:gentext key="glossseealso" text="Vezi și"/>
+<l:gentext key="IMPORTANT" text="IMPORTANT"/>
+<l:gentext key="important" text="Important"/>
+<l:gentext key="Important" text="Important"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="Index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text=""/>
+<l:gentext key="legalnotice" text=""/>
+<l:gentext key="MsgAud" text=""/>
+<l:gentext key="msgaud" text=""/>
+<l:gentext key="MsgLevel" text="Nivel"/>
+<l:gentext key="msglevel" text="Nivel"/>
+<l:gentext key="MsgOrig" text="Origine"/>
+<l:gentext key="msgorig" text="Origine"/>
+<l:gentext key="NOTE" text="NOTĂ"/>
+<l:gentext key="Note" text="Notă"/>
+<l:gentext key="note" text="Notă"/>
+<l:gentext key="Part" text="Parte"/>
+<l:gentext key="part" text="Parte"/>
+<l:gentext key="Preface" text="Prefață"/>
+<l:gentext key="preface" text="Prefață"/>
+<l:gentext key="Procedure" text="Procedură"/>
+<l:gentext key="procedure" text="Procedură"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Publicat"/>
+<l:gentext key="published" text="Publicat"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Întrebări și răspunsuri"/>
+<l:gentext key="qandadiv" text="întrebări și răspunsuri"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Î:"/>
+<l:gentext key="question" text="î:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referință"/>
+<l:gentext key="reference" text="Referință"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Nume"/>
+<l:gentext key="refname" text="Nume"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Rezumat"/>
+<l:gentext key="refsynopsisdiv" text="Rezumat"/>
+<l:gentext key="RevHistory" text="Istoricul versiunilor"/>
+<l:gentext key="revhistory" text="Istoricul versiunilor"/>
+<l:gentext key="revision" text="Versiune"/>
+<l:gentext key="Revision" text="Versiune"/>
+<l:gentext key="sect1" text="Secțiune"/>
+<l:gentext key="sect2" text="Secțiune"/>
+<l:gentext key="sect3" text="Secțiune"/>
+<l:gentext key="sect4" text="Secțiune"/>
+<l:gentext key="sect5" text="Secțiune"/>
+<l:gentext key="section" text="sec."/>
+<l:gentext key="Section" text="Secțiune"/>
+<l:gentext key="see" text="Vezi"/>
+<l:gentext key="See" text="Vezi"/>
+<l:gentext key="seealso" text="Vezi și"/>
+<l:gentext key="Seealso" text="Vezi și"/>
+<l:gentext key="SeeAlso" text="Vezi și"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Index"/>
+<l:gentext key="SetIndex" text="Index"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="operațiune"/>
+<l:gentext key="Step" text="Operație"/>
+<l:gentext key="table" text="Tabel"/>
+<l:gentext key="Table" text="Tabel"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Indicație"/>
+<l:gentext key="TIP" text="INDICAȚIE"/>
+<l:gentext key="Tip" text="Indicație"/>
+<l:gentext key="Warning" text="Avertisment"/>
+<l:gentext key="warning" text="Avertisment"/>
+<l:gentext key="WARNING" text="AVERTISMENT"/>
+<l:gentext key="and" text="și"/>
+<l:gentext key="by" text="de"/>
+<l:gentext key="Edited" text="Publicat"/>
+<l:gentext key="edited" text="Publicat"/>
+<l:gentext key="Editedby" text="Publicat de"/>
+<l:gentext key="editedby" text="Publicat de"/>
+<l:gentext key="in" text="în"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="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șteptat"/>
+<l:gentext key="unsupported" text="nerecunoscut de sisitem"/>
+<l:gentext key="xrefto" text="referință către"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Listă de ecuații"/>
+<l:gentext key="ListofEquations" text="Listă de ecuații"/>
+<l:gentext key="ListofExamples" text="Listă de exemple"/>
+<l:gentext key="listofexamples" text="Listă de exemple"/>
+<l:gentext key="ListofFigures" text="Listă de figuri"/>
+<l:gentext key="listoffigures" text="Listă de figuri"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Listă de tabele"/>
+<l:gentext key="ListofTables" text="Listă de tabele"/>
+<l:gentext key="ListofUnknown" text="Listă de necunoscute"/>
+<l:gentext key="listofunknown" text="Listă de necunoscute"/>
+<l:gentext key="nav-home" text="Acasă"/>
+<l:gentext key="nav-next" text="Înainte"/>
+<l:gentext key="nav-next-sibling" text="Repede ïnainte"/>
+<l:gentext key="nav-prev" text="Înapoi"/>
+<l:gentext key="nav-prev-sibling" text="Repede înapoi"/>
+<l:gentext key="nav-up" text="Sus"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Ciornă"/>
+<l:gentext key="above" text="deasupra"/>
+<l:gentext key="below" text="sub"/>
+<l:gentext key="sectioncalled" text="secțiunea numită"/>
+<l:gentext key="index symbols" text="Simboluri"/>
+<l:gentext key="lowercase.alpha" text="aăâbcdefghiîjklmnopqrsștșuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="AĂÂBCDEFGHIÎJKLMNOPQRSȘTȚUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="«"/>
+<l:dingbat key="nestedendquote" text="»"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Anexa %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Cap. %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="ecuația %n. %t"/>
+<l:template name="example" text="Exemplu %n. %t"/>
+<l:template name="figure" text="Fig. %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedură %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabel %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Anexa %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Cap. %n. %t"/>
+<l:template name="part" text="Parte %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Î: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Î: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="„%t”"/>
+<l:template name="refsection" text="„%t”"/>
+<l:template name="refsect1" text="„%t”"/>
+<l:template name="refsect2" text="„%t”"/>
+<l:template name="refsect3" text="„%t”"/>
+<l:template name="sect1" text="„%t”"/>
+<l:template name="sect2" text="„%t”"/>
+<l:template name="sect3" text="„%t”"/>
+<l:template name="sect4" text="„%t”"/>
+<l:template name="sect5" text="„%t”"/>
+<l:template name="section" text="„%t”"/>
+<l:template name="simplesect" text="„%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="R: %n"/>
+<l:template name="appendix" text="Anexa %n"/>
+<l:template name="bridgehead" text="Secțiune %n"/>
+<l:template name="chapter" text="Cap. %n"/>
+<l:template name="equation" text="ecuația %n"/>
+<l:template name="example" text="Exemplu %n"/>
+<l:template name="figure" text="Fig. %n"/>
+<l:template name="part" text="Parte %n"/>
+<l:template name="procedure" text="Procedură %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Întrebări și răspunsuri %n"/>
+<l:template name="qandaentry" text="Î: %n"/>
+<l:template name="question" text="Î: %n"/>
+<l:template name="sect1" text="Secțiune %n"/>
+<l:template name="sect2" text="Secțiune %n"/>
+<l:template name="sect3" text="Secțiune %n"/>
+<l:template name="sect4" text="Secțiune %n"/>
+<l:template name="sect5" text="Secțiune %n"/>
+<l:template name="section" text="Secțiune %n"/>
+<l:template name="table" text="Tabel %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Anexa %n, %t"/>
+<l:template name="bridgehead" text="Secțiune %n, „%t”"/>
+<l:template name="chapter" text="Cap. %n, %t"/>
+<l:template name="equation" text="ecuația %n, „%t”"/>
+<l:template name="example" text="Exemplu %n, „%t”"/>
+<l:template name="figure" text="Fig. %n, „%t”"/>
+<l:template name="part" text="Parte %n, „%t”"/>
+<l:template name="procedure" text="Procedură %n, „%t”"/>
+<l:template name="productionset" text="Production %n, „%t”"/>
+<l:template name="qandadiv" text="Întrebări și răspunsuri %n, „%t”"/>
+<l:template name="refsect1" text="secțiunea numită „%t”"/>
+<l:template name="refsect2" text="secțiunea numită „%t”"/>
+<l:template name="refsect3" text="secțiunea numită „%t”"/>
+<l:template name="refsection" text="secțiunea numită „%t”"/>
+<l:template name="sect1" text="Secțiune %n, „%t”"/>
+<l:template name="sect2" text="Secțiune %n, „%t”"/>
+<l:template name="sect3" text="Secțiune %n, „%t”"/>
+<l:template name="sect4" text="Secțiune %n, „%t”"/>
+<l:template name="sect5" text="Secțiune %n, „%t”"/>
+<l:template name="section" text="Secțiune %n, „%t”"/>
+<l:template name="simplesect" text="secțiunea numită „%t”"/>
+<l:template name="table" text="Tabel %n, „%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" și "/>
+<l:template name="seplast" text=", și "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vezi %t"/>
+<l:template name="seealso" text="Vezi și %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text=": "/>
+<l:template name="MsgLevel" text="Nivel: "/>
+<l:template name="MsgOrig" text="Origine: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0418 Romanian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/ru.xml b/docs/xsl-generic/common/ru.xml
new file mode 100644
index 00000000..290a9b1b
--- /dev/null
+++ b/docs/xsl-generic/common/ru.xml
@@ -0,0 +1,720 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ru" english-language-name="Russian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ru.xml -->
+<!-- * -->
+<!-- * E-mail the edited ru.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Аннотация"/>
+<l:gentext key="abstract" text="Аннотация"/>
+<l:gentext key="Answer" text="О:"/>
+<l:gentext key="answer" text="О:"/>
+<l:gentext key="Appendix" text="Приложение"/>
+<l:gentext key="appendix" text="приложение"/>
+<l:gentext key="Article" text="Статья"/>
+<l:gentext key="article" text="Статья"/>
+<l:gentext key="Author" text="Автор"/>
+<l:gentext key="Bibliography" text="Литература"/>
+<l:gentext key="bibliography" text="Литература"/>
+<l:gentext key="Book" text="Книга"/>
+<l:gentext key="book" text="Книга"/>
+<l:gentext key="CAUTION" text="ПРЕДОСТЕРЕЖЕНИЕ"/>
+<l:gentext key="Caution" text="Предостережение"/>
+<l:gentext key="caution" text="Предостережение"/>
+<l:gentext key="Chapter" text="Глава"/>
+<l:gentext key="chapter" text="глава"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Посвящение"/>
+<l:gentext key="dedication" text="Посвящение"/>
+<l:gentext key="Edition" text="Редакция"/>
+<l:gentext key="edition" text="Редакция"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Формула"/>
+<l:gentext key="equation" text="Формула"/>
+<l:gentext key="Example" text="Пример"/>
+<l:gentext key="example" text="Пример"/>
+<l:gentext key="Figure" text="Рисунок"/>
+<l:gentext key="figure" text="Рисунок"/>
+<l:gentext key="Glossary" text="Глоссарий"/>
+<l:gentext key="glossary" text="Глоссарий"/>
+<l:gentext key="GlossSee" text="См."/>
+<l:gentext key="glosssee" text="См."/>
+<l:gentext key="GlossSeeAlso" text="См. также"/>
+<l:gentext key="glossseealso" text="См. также"/>
+<l:gentext key="IMPORTANT" text="ВАЖНО"/>
+<l:gentext key="important" text="Важно"/>
+<l:gentext key="Important" text="Важно"/>
+<l:gentext key="Index" text="Предметный указатель"/>
+<l:gentext key="index" text="Предметный указатель"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Авторские права"/>
+<l:gentext key="legalnotice" text="Авторские права"/>
+<l:gentext key="MsgAud" text="Audience"/>
+<l:gentext key="msgaud" text="Audience"/>
+<l:gentext key="MsgLevel" text="Level"/>
+<l:gentext key="msglevel" text="Level"/>
+<l:gentext key="MsgOrig" text="Origin"/>
+<l:gentext key="msgorig" text="Origin"/>
+<l:gentext key="NOTE" text="ЗАМЕЧАНИЕ"/>
+<l:gentext key="Note" text="Замечание"/>
+<l:gentext key="note" text="Замечание"/>
+<l:gentext key="Part" text="Часть"/>
+<l:gentext key="part" text="Часть"/>
+<l:gentext key="Preface" text="Предисловие"/>
+<l:gentext key="preface" text="Предисловие"/>
+<l:gentext key="Procedure" text="Процедура"/>
+<l:gentext key="procedure" text="Процедура"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Опубликовано"/>
+<l:gentext key="published" text="Опубликовано"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="В и О"/>
+<l:gentext key="qandadiv" text="В и О"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="В:"/>
+<l:gentext key="question" text="В:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Ссылка"/>
+<l:gentext key="reference" text="Ссылка"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Название"/>
+<l:gentext key="refname" text="Название"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Синтаксис"/>
+<l:gentext key="refsynopsisdiv" text="Синтаксис"/>
+<l:gentext key="RevHistory" text="История переиздания"/>
+<l:gentext key="revhistory" text="История переиздания"/>
+<l:gentext key="revision" text="Издание"/>
+<l:gentext key="Revision" text="Издание"/>
+<l:gentext key="sect1" text="Раздел"/>
+<l:gentext key="sect2" text="Раздел"/>
+<l:gentext key="sect3" text="Раздел"/>
+<l:gentext key="sect4" text="Раздел"/>
+<l:gentext key="sect5" text="Раздел"/>
+<l:gentext key="section" text="раздел"/>
+<l:gentext key="Section" text="Раздел"/>
+<l:gentext key="see" text="См."/>
+<l:gentext key="See" text="См."/>
+<l:gentext key="seealso" text="См. также"/>
+<l:gentext key="Seealso" text="См. также"/>
+<l:gentext key="SeeAlso" text="См. также"/>
+<l:gentext key="set" text="Подборка"/>
+<l:gentext key="Set" text="Подборка"/>
+<l:gentext key="setindex" text="Индекс подборки"/>
+<l:gentext key="SetIndex" text="Индекс подборки"/>
+<l:gentext key="Sidebar" text="Выделение"/>
+<l:gentext key="sidebar" text="выделение"/>
+<l:gentext key="step" text="шаг"/>
+<l:gentext key="Step" text="Шаг"/>
+<l:gentext key="table" text="Таблица"/>
+<l:gentext key="Table" text="Таблица"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Подсказка"/>
+<l:gentext key="TIP" text="ПОДСКАЗКА"/>
+<l:gentext key="Tip" text="Подсказка"/>
+<l:gentext key="Warning" text="Внимание"/>
+<l:gentext key="warning" text="Внимание"/>
+<l:gentext key="WARNING" text="ВНИМАНИЕ"/>
+<l:gentext key="and" text=""/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Под редакцией"/>
+<l:gentext key="edited" text="Под редакцией"/>
+<l:gentext key="Editedby" text="Под редакцией"/>
+<l:gentext key="editedby" text="Под редакцией"/>
+<l:gentext key="in" text="в"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="non-existant element"/>
+<l:gentext key="notes" text="Примечания"/>
+<l:gentext key="Notes" text="Примечания"/>
+<l:gentext key="Pgs" text="Стр."/>
+<l:gentext key="pgs" text="Стр."/>
+<l:gentext key="Revisedby" text="Revised by: "/>
+<l:gentext key="revisedby" text="Revised by: "/>
+<l:gentext key="TableNotes" text="Примечания"/>
+<l:gentext key="tablenotes" text="Примечания"/>
+<l:gentext key="TableofContents" text="Содержание"/>
+<l:gentext key="tableofcontents" text="Содержание"/>
+<l:gentext key="unexpectedelementname" text="unexpected element name"/>
+<l:gentext key="unsupported" text="unsupported"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Список формул"/>
+<l:gentext key="ListofEquations" text="Список формул"/>
+<l:gentext key="ListofExamples" text="Список примеров"/>
+<l:gentext key="listofexamples" text="Список примеров"/>
+<l:gentext key="ListofFigures" text="Список иллюстраций"/>
+<l:gentext key="listoffigures" text="Список иллюстраций"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Список таблиц"/>
+<l:gentext key="ListofTables" text="Список таблиц"/>
+<l:gentext key="ListofUnknown" text="Неопределенный список"/>
+<l:gentext key="listofunknown" text="Неопределенный список"/>
+<l:gentext key="nav-home" text="Начало"/>
+<l:gentext key="nav-next" text="След."/>
+<l:gentext key="nav-next-sibling" text="След. подраздел"/>
+<l:gentext key="nav-prev" text="Пред."/>
+<l:gentext key="nav-prev-sibling" text="Пред. подраздел"/>
+<l:gentext key="nav-up" text="Уровень выше"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Черновик"/>
+<l:gentext key="above" text="выше"/>
+<l:gentext key="below" text="ниже"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="абвгдеёжзийклмнопрстуфхцчшщъыьэюя"/>
+<l:gentext key="uppercase.alpha" text="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="«"/>
+<l:dingbat key="endquote" text="»"/>
+<l:dingbat key="nestedstartquote" text="„"/>
+<l:dingbat key="nestedendquote" text="“"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Приложение %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Глава %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Формула %n. %t"/>
+<l:template name="example" text="Пример %n. %t"/>
+<l:template name="figure" text="Рисунок %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Часть %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Процедура %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Таблица %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Приложение %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Глава %n. %t"/>
+<l:template name="part" text="Часть %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="В: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="В: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="«%t»"/>
+<l:template name="refsection" text="«%t»"/>
+<l:template name="refsect1" text="«%t»"/>
+<l:template name="refsect2" text="«%t»"/>
+<l:template name="refsect3" text="«%t»"/>
+<l:template name="sect1" text="«%t»"/>
+<l:template name="sect2" text="«%t»"/>
+<l:template name="sect3" text="«%t»"/>
+<l:template name="sect4" text="«%t»"/>
+<l:template name="sect5" text="«%t»"/>
+<l:template name="section" text="«%t»"/>
+<l:template name="simplesect" text="«%t»"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="О: %n"/>
+<l:template name="appendix" text="Приложение %n"/>
+<l:template name="bridgehead" text="Раздел %n"/>
+<l:template name="chapter" text="Глава %n"/>
+<l:template name="equation" text="Формула %n"/>
+<l:template name="example" text="Пример %n"/>
+<l:template name="figure" text="Рисунок %n"/>
+<l:template name="part" text="Часть %n"/>
+<l:template name="procedure" text="Процедура %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="В и О %n"/>
+<l:template name="qandaentry" text="В: %n"/>
+<l:template name="question" text="В: %n"/>
+<l:template name="sect1" text="Раздел %n"/>
+<l:template name="sect2" text="Раздел %n"/>
+<l:template name="sect3" text="Раздел %n"/>
+<l:template name="sect4" text="Раздел %n"/>
+<l:template name="sect5" text="Раздел %n"/>
+<l:template name="section" text="Раздел %n"/>
+<l:template name="table" text="Таблица %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Приложение %n, %t"/>
+<l:template name="bridgehead" text="Раздел %n, «%t»"/>
+<l:template name="chapter" text="Глава %n, %t"/>
+<l:template name="equation" text="Формула %n, «%t»"/>
+<l:template name="example" text="Пример %n, «%t»"/>
+<l:template name="figure" text="Рисунок %n, «%t»"/>
+<l:template name="part" text="Часть %n, «%t»"/>
+<l:template name="procedure" text="Процедура %n, «%t»"/>
+<l:template name="productionset" text="Production %n, «%t»"/>
+<l:template name="qandadiv" text="В и О %n, «%t»"/>
+<l:template name="refsect1" text="the section called «%t»"/>
+<l:template name="refsect2" text="the section called «%t»"/>
+<l:template name="refsect3" text="the section called «%t»"/>
+<l:template name="refsection" text="the section called «%t»"/>
+<l:template name="sect1" text="Раздел %n, «%t»"/>
+<l:template name="sect2" text="Раздел %n, «%t»"/>
+<l:template name="sect3" text="Раздел %n, «%t»"/>
+<l:template name="sect4" text="Раздел %n, «%t»"/>
+<l:template name="sect5" text="Раздел %n, «%t»"/>
+<l:template name="section" text="Раздел %n, «%t»"/>
+<l:template name="simplesect" text="the section called «%t»"/>
+<l:template name="table" text="Таблица %n, «%t»"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" "/>
+<l:template name="seplast" text=", "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="См. %t"/>
+<l:template name="seealso" text="См. также %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Audience: "/>
+<l:template name="MsgLevel" text="Level: "/>
+<l:template name="MsgOrig" text="Origin: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="января"/>
+<l:template name="February" text="февраля"/>
+<l:template name="March" text="марта"/>
+<l:template name="April" text="апреля"/>
+<l:template name="May" text="мая"/>
+<l:template name="June" text="июня"/>
+<l:template name="July" text="июля"/>
+<l:template name="August" text="августа"/>
+<l:template name="September" text="сентября"/>
+<l:template name="October" text="октября"/>
+<l:template name="November" text="ноября"/>
+<l:template name="December" text="декабря"/>
+<l:template name="Monday" text="понедельник"/>
+<l:template name="Tuesday" text="вторник"/>
+<l:template name="Wednesday" text="среда"/>
+<l:template name="Thursday" text="четвэрг"/>
+<l:template name="Friday" text="пятница"/>
+<l:template name="Saturday" text="суббота"/>
+<l:template name="Sunday" text="воскресенье"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Янв"/>
+<l:template name="Feb" text="Фев"/>
+<l:template name="Mar" text="Мар"/>
+<l:template name="Apr" text="Апр"/>
+<l:template name="May" text="Май"/>
+<l:template name="Jun" text="Июн"/>
+<l:template name="Jul" text="Июл"/>
+<l:template name="Aug" text="Авг"/>
+<l:template name="Sep" text="Сен"/>
+<l:template name="Oct" text="Окт"/>
+<l:template name="Nov" text="Ноя"/>
+<l:template name="Dec" text="Дек"/>
+<l:template name="Mon" text="Пнд"/>
+<l:template name="Tue" text="Втр"/>
+<l:template name="Wed" text="Срд"/>
+<l:template name="Thu" text="Чтв"/>
+<l:template name="Fri" text="Птн"/>
+<l:template name="Sat" text="Сбт"/>
+<l:template name="Sun" text="Вск"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0419 Russian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0"/>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="270">А</l:l>
+<l:l i="270">а</l:l>
+<l:l i="280">Б</l:l>
+<l:l i="280">б</l:l>
+<l:l i="290">В</l:l>
+<l:l i="290">в</l:l>
+<l:l i="300">Г</l:l>
+<l:l i="300">г</l:l>
+<l:l i="310">Д</l:l>
+<l:l i="310">д</l:l>
+<l:l i="320">Е</l:l>
+<l:l i="320">е</l:l>
+<l:l i="320">Ё</l:l>
+<l:l i="320">ё</l:l>
+<l:l i="330">Ж</l:l>
+<l:l i="330">ж</l:l>
+<l:l i="340">З</l:l>
+<l:l i="340">з</l:l>
+<l:l i="350">И</l:l>
+<l:l i="350">и</l:l>
+<l:l i="360">Й</l:l>
+<l:l i="360">й</l:l>
+<l:l i="370">К</l:l>
+<l:l i="370">к</l:l>
+<l:l i="380">Л</l:l>
+<l:l i="380">л</l:l>
+<l:l i="390">М</l:l>
+<l:l i="390">м</l:l>
+<l:l i="400">Н</l:l>
+<l:l i="400">н</l:l>
+<l:l i="410">О</l:l>
+<l:l i="410">о</l:l>
+<l:l i="420">П</l:l>
+<l:l i="420">п</l:l>
+<l:l i="430">Р</l:l>
+<l:l i="430">р</l:l>
+<l:l i="440">С</l:l>
+<l:l i="440">с</l:l>
+<l:l i="450">Т</l:l>
+<l:l i="450">т</l:l>
+<l:l i="460">У</l:l>
+<l:l i="460">у</l:l>
+<l:l i="470">Ф</l:l>
+<l:l i="470">ф</l:l>
+<l:l i="480">Х</l:l>
+<l:l i="480">х</l:l>
+<l:l i="490">Ц</l:l>
+<l:l i="490">ц</l:l>
+<l:l i="500">Ч</l:l>
+<l:l i="500">ч</l:l>
+<l:l i="510">Ш</l:l>
+<l:l i="510">ш</l:l>
+<l:l i="520">Щ</l:l>
+<l:l i="520">щ</l:l>
+<l:l i="530">Ъ</l:l>
+<l:l i="530">ъ</l:l>
+<l:l i="540">Ы</l:l>
+<l:l i="540">ы</l:l>
+<l:l i="550">Ь</l:l>
+<l:l i="550">ь</l:l>
+<l:l i="560">Э</l:l>
+<l:l i="560">э</l:l>
+<l:l i="570">Ю</l:l>
+<l:l i="570">ю</l:l>
+<l:l i="580">Я</l:l>
+<l:l i="580">я</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/sk.xml b/docs/xsl-generic/common/sk.xml
new file mode 100644
index 00000000..50f7e2cd
--- /dev/null
+++ b/docs/xsl-generic/common/sk.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sk" english-language-name="Slovak">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sk.xml -->
+<!-- * -->
+<!-- * E-mail the edited sk.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrakt"/>
+<l:gentext key="abstract" text="Abstrakt"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Dodatok"/>
+<l:gentext key="appendix" text="dodatok"/>
+<l:gentext key="Article" text="Článok"/>
+<l:gentext key="article" text="Článok"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Kniha"/>
+<l:gentext key="book" text="Kniha"/>
+<l:gentext key="CAUTION" text="VÝSTRAHA"/>
+<l:gentext key="Caution" text="Výstraha"/>
+<l:gentext key="caution" text="Výstraha"/>
+<l:gentext key="Chapter" text="Kapitola"/>
+<l:gentext key="chapter" text="kapitola"/>
+<l:gentext key="Colophon" text="Tiráž"/>
+<l:gentext key="colophon" text="Tiráž"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Venovanie"/>
+<l:gentext key="dedication" text="Venovanie"/>
+<l:gentext key="Edition" text="Vydanie"/>
+<l:gentext key="edition" text="Vydanie"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Rovnica"/>
+<l:gentext key="equation" text="Rovnica"/>
+<l:gentext key="Example" text="Príklad"/>
+<l:gentext key="example" text="Príklad"/>
+<l:gentext key="Figure" text="Obrázok"/>
+<l:gentext key="figure" text="Obrázok"/>
+<l:gentext key="Glossary" text="Slovník"/>
+<l:gentext key="glossary" text="Slovník"/>
+<l:gentext key="GlossSee" text="Pozri"/>
+<l:gentext key="glosssee" text="Pozri"/>
+<l:gentext key="GlossSeeAlso" text="Pozri tiež"/>
+<l:gentext key="glossseealso" text="Pozri tiež"/>
+<l:gentext key="IMPORTANT" text="DÔLEŽITÉ"/>
+<l:gentext key="important" text="Dôležité"/>
+<l:gentext key="Important" text="Dôležité"/>
+<l:gentext key="Index" text="Zoznam"/>
+<l:gentext key="index" text="Zoznam"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Právna poznámka"/>
+<l:gentext key="legalnotice" text="Právna poznámka"/>
+<l:gentext key="MsgAud" text="Publikum"/>
+<l:gentext key="msgaud" text="Publikum"/>
+<l:gentext key="MsgLevel" text="Úroveň"/>
+<l:gentext key="msglevel" text="Úroveň"/>
+<l:gentext key="MsgOrig" text="Pôvod"/>
+<l:gentext key="msgorig" text="Pôvod"/>
+<l:gentext key="NOTE" text="POZNÁMKA"/>
+<l:gentext key="Note" text="Poznámka"/>
+<l:gentext key="note" text="Poznámka"/>
+<l:gentext key="Part" text="Časť"/>
+<l:gentext key="part" text="Časť"/>
+<l:gentext key="Preface" text="Predslov"/>
+<l:gentext key="preface" text="Predslov"/>
+<l:gentext key="Procedure" text="Postup"/>
+<l:gentext key="procedure" text="Postup"/>
+<l:gentext key="ProductionSet" text="Produkcia"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Vydané"/>
+<l:gentext key="published" text="Vydané"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="Q:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Odkaz"/>
+<l:gentext key="reference" text="Odkaz"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Meno"/>
+<l:gentext key="refname" text="Meno"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Prehľad"/>
+<l:gentext key="refsynopsisdiv" text="Prehľad"/>
+<l:gentext key="RevHistory" text="Prehľad revízií"/>
+<l:gentext key="revhistory" text="Prehľad revízií"/>
+<l:gentext key="revision" text="Revízia"/>
+<l:gentext key="Revision" text="Revízia"/>
+<l:gentext key="sect1" text="Oddiel"/>
+<l:gentext key="sect2" text="Oddiel"/>
+<l:gentext key="sect3" text="Oddiel"/>
+<l:gentext key="sect4" text="Oddiel"/>
+<l:gentext key="sect5" text="Oddiel"/>
+<l:gentext key="section" text="oddiel"/>
+<l:gentext key="Section" text="Oddiel"/>
+<l:gentext key="see" text="Pozri"/>
+<l:gentext key="See" text="Pozri"/>
+<l:gentext key="seealso" text="Pozri tiež"/>
+<l:gentext key="Seealso" text="Pozri tiež"/>
+<l:gentext key="SeeAlso" text="Pozri tiež"/>
+<l:gentext key="set" text="Nastaviť"/>
+<l:gentext key="Set" text="Nastaviť"/>
+<l:gentext key="setindex" text="nastaviť index"/>
+<l:gentext key="SetIndex" text="Nastaviť index"/>
+<l:gentext key="Sidebar" text="Marginália"/>
+<l:gentext key="sidebar" text="marginália"/>
+<l:gentext key="step" text="krok"/>
+<l:gentext key="Step" text="Krok"/>
+<l:gentext key="table" text="Tabuľka"/>
+<l:gentext key="Table" text="Tabuľka"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Varovanie"/>
+<l:gentext key="warning" text="Varovanie"/>
+<l:gentext key="WARNING" text="VAROVANIE"/>
+<l:gentext key="and" text="a"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Vydané"/>
+<l:gentext key="edited" text="Vydané"/>
+<l:gentext key="Editedby" text="Zostavil: "/>
+<l:gentext key="editedby" text="Zostavil: "/>
+<l:gentext key="in" text="v"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="neexistujúci prvok"/>
+<l:gentext key="notes" text="Poznámky"/>
+<l:gentext key="Notes" text="Poznámky"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="Str."/>
+<l:gentext key="Revisedby" text="Revidoval: "/>
+<l:gentext key="revisedby" text="Revidoval: "/>
+<l:gentext key="TableNotes" text="Poznámky"/>
+<l:gentext key="tablenotes" text="Poznámky"/>
+<l:gentext key="TableofContents" text="Obsah"/>
+<l:gentext key="tableofcontents" text="Obsah"/>
+<l:gentext key="unexpectedelementname" text="Neočakávané meno prvku"/>
+<l:gentext key="unsupported" text="nepodporovaný"/>
+<l:gentext key="xrefto" text="xref k"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Zoznam rovníc"/>
+<l:gentext key="ListofEquations" text="Zoznam rovníc"/>
+<l:gentext key="ListofExamples" text="Zoznam príkladov"/>
+<l:gentext key="listofexamples" text="Zoznam príkladov"/>
+<l:gentext key="ListofFigures" text="Zoznam obrázkov"/>
+<l:gentext key="listoffigures" text="Zoznam obrázkov"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Zoznam tabuliek"/>
+<l:gentext key="ListofTables" text="Zoznam tabuliek"/>
+<l:gentext key="ListofUnknown" text="Zoznam neznámeho"/>
+<l:gentext key="listofunknown" text="Zoznam neznámeho"/>
+<l:gentext key="nav-home" text="Domov"/>
+<l:gentext key="nav-next" text="Nasledujúci"/>
+<l:gentext key="nav-next-sibling" text="Rýchlo dopredu"/>
+<l:gentext key="nav-prev" text="Predchádzajúci"/>
+<l:gentext key="nav-prev-sibling" text="Rýchlo nazpät"/>
+<l:gentext key="nav-up" text="Hore"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Koncept"/>
+<l:gentext key="above" text="nad"/>
+<l:gentext key="below" text="pod"/>
+<l:gentext key="sectioncalled" text="oddiel nazvaný"/>
+<l:gentext key="index symbols" text="Symboly"/>
+<l:gentext key="lowercase.alpha" text="aáäbcčdďeéfghiíjklĺľmnňoóôpqrŕsštťuúvwxyýzž"/>
+<l:gentext key="uppercase.alpha" text="AÁÄBCČDĎEÉFGHIÍJKLĹĽMNŇOÓÔPQRŔSŠTŤUÚVWXYÝZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatok %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitola %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Rovnica %n. %t"/>
+<l:template name="example" text="Príklad %n. %t"/>
+<l:template name="figure" text="Obrázok %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Časť %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postup %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcia %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabuľka %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatok %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Kapitola %n. %t"/>
+<l:template name="part" text="Časť %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Dodatok %n"/>
+<l:template name="bridgehead" text="Oddiel %n"/>
+<l:template name="chapter" text="Kapitola %n"/>
+<l:template name="equation" text="Rovnica %n"/>
+<l:template name="example" text="Príklad %n"/>
+<l:template name="figure" text="Obrázok %n"/>
+<l:template name="part" text="Časť %n"/>
+<l:template name="procedure" text="Postup %n"/>
+<l:template name="productionset" text="Produkcia %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="Oddiel %n"/>
+<l:template name="sect2" text="Oddiel %n"/>
+<l:template name="sect3" text="Oddiel %n"/>
+<l:template name="sect4" text="Oddiel %n"/>
+<l:template name="sect5" text="Oddiel %n"/>
+<l:template name="section" text="Oddiel %n"/>
+<l:template name="table" text="Tabuľka %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatok %n, %t"/>
+<l:template name="bridgehead" text="Oddiel %n, “%t”"/>
+<l:template name="chapter" text="Kapitola %n, %t"/>
+<l:template name="equation" text="Rovnica %n, “%t”"/>
+<l:template name="example" text="Príklad %n, “%t”"/>
+<l:template name="figure" text="Obrázok %n, “%t”"/>
+<l:template name="part" text="Časť %n, “%t”"/>
+<l:template name="procedure" text="Postup %n, “%t”"/>
+<l:template name="productionset" text="Produkcia %n, “%t”"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%t”"/>
+<l:template name="refsect1" text="oddiel nazvaný “%t”"/>
+<l:template name="refsect2" text="oddiel nazvaný “%t”"/>
+<l:template name="refsect3" text="oddiel nazvaný “%t”"/>
+<l:template name="refsection" text="oddiel nazvaný “%t”"/>
+<l:template name="sect1" text="Oddiel %n, “%t”"/>
+<l:template name="sect2" text="Oddiel %n, “%t”"/>
+<l:template name="sect3" text="Oddiel %n, “%t”"/>
+<l:template name="sect4" text="Oddiel %n, “%t”"/>
+<l:template name="sect5" text="Oddiel %n, “%t”"/>
+<l:template name="section" text="Oddiel %n, “%t”"/>
+<l:template name="simplesect" text="oddiel nazvaný “%t”"/>
+<l:template name="table" text="Tabuľka %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" a "/>
+<l:template name="seplast" text=", a "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Pozri %t"/>
+<l:template name="seealso" text="Pozri tiež %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publikum: "/>
+<l:template name="MsgLevel" text="Úroveň: "/>
+<l:template name="MsgOrig" text="Pôvod: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d. B Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="januára"/>
+<l:template name="February" text="februára"/>
+<l:template name="March" text="marca"/>
+<l:template name="April" text="apríla"/>
+<l:template name="May" text="mája"/>
+<l:template name="June" text="júna"/>
+<l:template name="July" text="júla"/>
+<l:template name="August" text="augusta"/>
+<l:template name="September" text="septembra"/>
+<l:template name="October" text="októbra"/>
+<l:template name="November" text="novembra"/>
+<l:template name="December" text="decembra"/>
+<l:template name="Monday" text="pondelok"/>
+<l:template name="Tuesday" text="utorok"/>
+<l:template name="Wednesday" text="streda"/>
+<l:template name="Thursday" text="štvrtok"/>
+<l:template name="Friday" text="piatok"/>
+<l:template name="Saturday" text="sobota"/>
+<l:template name="Sunday" text="nedeľa"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="apr"/>
+<l:template name="May" text="máj"/>
+<l:template name="Jun" text="jún"/>
+<l:template name="Jul" text="júl"/>
+<l:template name="Aug" text="aug"/>
+<l:template name="Sep" text="sep"/>
+<l:template name="Oct" text="okt"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dec"/>
+<l:template name="Mon" text="po"/>
+<l:template name="Tue" text="ut"/>
+<l:template name="Wed" text="st"/>
+<l:template name="Thu" text="št"/>
+<l:template name="Fri" text="pi"/>
+<l:template name="Sat" text="so"/>
+<l:template name="Sun" text="ne"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041b Slovak"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/sl.xml b/docs/xsl-generic/common/sl.xml
new file mode 100644
index 00000000..43d229ea
--- /dev/null
+++ b/docs/xsl-generic/common/sl.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sl" english-language-name="Slovenian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sl.xml -->
+<!-- * -->
+<!-- * E-mail the edited sl.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Povzetek"/>
+<l:gentext key="abstract" text="Povzetek"/>
+<l:gentext key="Answer" text="O:"/>
+<l:gentext key="answer" text="O:"/>
+<l:gentext key="Appendix" text="Dodatek"/>
+<l:gentext key="appendix" text="dodatek"/>
+<l:gentext key="Article" text="Članek"/>
+<l:gentext key="article" text="Članek"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Literatura"/>
+<l:gentext key="bibliography" text="Literatura"/>
+<l:gentext key="Book" text="Knjiga"/>
+<l:gentext key="book" text="Knjiga"/>
+<l:gentext key="CAUTION" text="OPOZORILO"/>
+<l:gentext key="Caution" text="Opozorilo"/>
+<l:gentext key="caution" text="Opozorilo"/>
+<l:gentext key="Chapter" text="Poglavje"/>
+<l:gentext key="chapter" text="poglavje"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="Kolofon"/>
+<l:gentext key="Copyright" text="Pravna zaščita"/>
+<l:gentext key="copyright" text="Pravna zaščita"/>
+<l:gentext key="Dedication" text="Posvetilo"/>
+<l:gentext key="dedication" text="Posvetilo"/>
+<l:gentext key="Edition" text="Izdaja"/>
+<l:gentext key="edition" text="Izdaja"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Enačba"/>
+<l:gentext key="equation" text="Enačba"/>
+<l:gentext key="Example" text="Primer"/>
+<l:gentext key="example" text="Primer"/>
+<l:gentext key="Figure" text="Slika"/>
+<l:gentext key="figure" text="Slika"/>
+<l:gentext key="Glossary" text="Slovarček"/>
+<l:gentext key="glossary" text="Slovarček"/>
+<l:gentext key="GlossSee" text="glej"/>
+<l:gentext key="glosssee" text="glej"/>
+<l:gentext key="GlossSeeAlso" text="glej tudi"/>
+<l:gentext key="glossseealso" text="glej tudi"/>
+<l:gentext key="IMPORTANT" text="POMEMBNO"/>
+<l:gentext key="important" text="Pomembno"/>
+<l:gentext key="Important" text="Pomembno"/>
+<l:gentext key="Index" text="Stvarno kazalo"/>
+<l:gentext key="index" text="Stvarno kazalo"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Pravno sporočilo"/>
+<l:gentext key="legalnotice" text="Pravno sporočilo"/>
+<l:gentext key="MsgAud" text="Občinstvo"/>
+<l:gentext key="msgaud" text="Občinstvo"/>
+<l:gentext key="MsgLevel" text="Raven"/>
+<l:gentext key="msglevel" text="Raven"/>
+<l:gentext key="MsgOrig" text="Izvor"/>
+<l:gentext key="msgorig" text="Izvor"/>
+<l:gentext key="NOTE" text="OPOMBA"/>
+<l:gentext key="Note" text="Opomba"/>
+<l:gentext key="note" text="Opomba"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="Del"/>
+<l:gentext key="Preface" text="Predgovor"/>
+<l:gentext key="preface" text="Predgovor"/>
+<l:gentext key="Procedure" text="Postopek"/>
+<l:gentext key="procedure" text="Postopek"/>
+<l:gentext key="ProductionSet" text="Izdelava"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Izdano"/>
+<l:gentext key="published" text="Izdano"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="V in O"/>
+<l:gentext key="qandadiv" text="V in O"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="V:"/>
+<l:gentext key="question" text="V:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Sklic"/>
+<l:gentext key="reference" text="Sklic"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Ime"/>
+<l:gentext key="refname" text="Ime"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Sinopsis"/>
+<l:gentext key="refsynopsisdiv" text="Sinopsis"/>
+<l:gentext key="RevHistory" text="Zgodovina različic"/>
+<l:gentext key="revhistory" text="Zgodovina različic"/>
+<l:gentext key="revision" text="Različica"/>
+<l:gentext key="Revision" text="Različica"/>
+<l:gentext key="sect1" text="Razdelek"/>
+<l:gentext key="sect2" text="Razdelek"/>
+<l:gentext key="sect3" text="Razdelek"/>
+<l:gentext key="sect4" text="Razdelek"/>
+<l:gentext key="sect5" text="Razdelek"/>
+<l:gentext key="section" text="razdelek"/>
+<l:gentext key="Section" text="Razdelek"/>
+<l:gentext key="see" text="glej"/>
+<l:gentext key="See" text="glej"/>
+<l:gentext key="seealso" text="glej tudi"/>
+<l:gentext key="Seealso" text="Glej tudi"/>
+<l:gentext key="SeeAlso" text="glej tudi"/>
+<l:gentext key="set" text="Postavi"/>
+<l:gentext key="Set" text="Postavi"/>
+<l:gentext key="setindex" text="Postavi stvarno kazalo"/>
+<l:gentext key="SetIndex" text="Postavi stvarno kazalo"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="korak"/>
+<l:gentext key="Step" text="Korak"/>
+<l:gentext key="table" text="Tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Namig"/>
+<l:gentext key="TIP" text="NAMIG"/>
+<l:gentext key="Tip" text="Namig"/>
+<l:gentext key="Warning" text="Pozor"/>
+<l:gentext key="warning" text="Pozor"/>
+<l:gentext key="WARNING" text="POZOR"/>
+<l:gentext key="and" text="in"/>
+<l:gentext key="by" text="od"/>
+<l:gentext key="Edited" text="Urejeno"/>
+<l:gentext key="edited" text="Urejeno"/>
+<l:gentext key="Editedby" text="Uredil"/>
+<l:gentext key="editedby" text="Uredil"/>
+<l:gentext key="in" text="v"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="neobstoječ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čakovano ime elementa"/>
+<l:gentext key="unsupported" text="nepodprto"/>
+<l:gentext key="xrefto" text="xref na"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Seznam enačb"/>
+<l:gentext key="ListofEquations" text="Seznam enačb"/>
+<l:gentext key="ListofExamples" text="Seznam primerov"/>
+<l:gentext key="listofexamples" text="Seznam primerov"/>
+<l:gentext key="ListofFigures" text="Seznam slik"/>
+<l:gentext key="listoffigures" text="Seznam slik"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Seznam tabel"/>
+<l:gentext key="ListofTables" text="Seznam tabel"/>
+<l:gentext key="ListofUnknown" text="Seznam neznanih stvari"/>
+<l:gentext key="listofunknown" text="Seznam neznanih stvari"/>
+<l:gentext key="nav-home" text="Domov"/>
+<l:gentext key="nav-next" text="Naprej"/>
+<l:gentext key="nav-next-sibling" text="Hitro naprej"/>
+<l:gentext key="nav-prev" text="Nazaj"/>
+<l:gentext key="nav-prev-sibling" text="Hitro nazaj"/>
+<l:gentext key="nav-up" text="Gor"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="razdelek, imenovan"/>
+<l:gentext key="index symbols" text="Simboli"/>
+<l:gentext key="lowercase.alpha" text="abcčdefghijklmnopqrsštuvwxyzž"/>
+<l:gentext key="uppercase.alpha" text="ABCČDEFGHIJKLMNOPQRSŠTUVWXYZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatek %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Poglavje %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Enačba %n. %t"/>
+<l:template name="example" text="Primer %n. %t"/>
+<l:template name="figure" text="Slika %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postopek %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Izdelava %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatek %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Poglavje %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="V: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="V: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="O: %n"/>
+<l:template name="appendix" text="Dodatek %n"/>
+<l:template name="bridgehead" text="Razdelek %n"/>
+<l:template name="chapter" text="Poglavje %n"/>
+<l:template name="equation" text="Enačba %n"/>
+<l:template name="example" text="Primer %n"/>
+<l:template name="figure" text="Slika %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Postopek %n"/>
+<l:template name="productionset" text="Izdelava %n"/>
+<l:template name="qandadiv" text="V in O %n"/>
+<l:template name="qandaentry" text="V: %n"/>
+<l:template name="question" text="V: %n"/>
+<l:template name="sect1" text="Razdelek %n"/>
+<l:template name="sect2" text="Razdelek %n"/>
+<l:template name="sect3" text="Razdelek %n"/>
+<l:template name="sect4" text="Razdelek %n"/>
+<l:template name="sect5" text="Razdelek %n"/>
+<l:template name="section" text="Razdelek %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatek %n, %t"/>
+<l:template name="bridgehead" text="Razdelek %n, “%t”"/>
+<l:template name="chapter" text="Poglavje %n, %t"/>
+<l:template name="equation" text="Enačba %n, “%t”"/>
+<l:template name="example" text="Primer %n, “%t”"/>
+<l:template name="figure" text="Slika %n, “%t”"/>
+<l:template name="part" text="Del %n, “%t”"/>
+<l:template name="procedure" text="Postopek %n, “%t”"/>
+<l:template name="productionset" text="Izdelava %n, “%t”"/>
+<l:template name="qandadiv" text="V in O %n, “%t”"/>
+<l:template name="refsect1" text="razdelek, imenovan “%t”"/>
+<l:template name="refsect2" text="razdelek, imenovan “%t”"/>
+<l:template name="refsect3" text="razdelek, imenovan “%t”"/>
+<l:template name="refsection" text="razdelek, imenovan “%t”"/>
+<l:template name="sect1" text="Razdelek %n, “%t”"/>
+<l:template name="sect2" text="Razdelek %n, “%t”"/>
+<l:template name="sect3" text="Razdelek %n, “%t”"/>
+<l:template name="sect4" text="Razdelek %n, “%t”"/>
+<l:template name="sect5" text="Razdelek %n, “%t”"/>
+<l:template name="section" text="Razdelek %n, “%t”"/>
+<l:template name="simplesect" text="razdelek, imenovan “%t”"/>
+<l:template name="table" text="Tabela %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" in "/>
+<l:template name="seplast" text=", in "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="glej %t"/>
+<l:template name="seealso" text="glej tudi %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Občinstvo: "/>
+<l:template name="MsgLevel" text="Raven: "/>
+<l:template name="MsgOrig" text="Izvor: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0424 Slovenian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/sq.xml b/docs/xsl-generic/common/sq.xml
new file mode 100644
index 00000000..66c97b94
--- /dev/null
+++ b/docs/xsl-generic/common/sq.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sq" english-language-name="Albanian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sq.xml -->
+<!-- * -->
+<!-- * E-mail the edited sq.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Përshkrimi"/>
+<l:gentext key="abstract" text="Përshkrimi"/>
+<l:gentext key="Answer" text="P:"/>
+<l:gentext key="answer" text="P:"/>
+<l:gentext key="Appendix" text="Shtesë"/>
+<l:gentext key="appendix" text="Shtesë"/>
+<l:gentext key="Article" text="Artikull"/>
+<l:gentext key="article" text="Artikull"/>
+<l:gentext key="Author" text="Autorë"/>
+<l:gentext key="Bibliography" text="Bibliografia"/>
+<l:gentext key="bibliography" text="Bibliografia"/>
+<l:gentext key="Book" text="Libri"/>
+<l:gentext key="book" text="Libri"/>
+<l:gentext key="CAUTION" text="KUJDES"/>
+<l:gentext key="Caution" text="Kujdes"/>
+<l:gentext key="caution" text="Kujdes"/>
+<l:gentext key="Chapter" text="Kapitulli"/>
+<l:gentext key="chapter" text="kapitulli"/>
+<l:gentext key="Colophon" text="Shënime publikimi"/>
+<l:gentext key="colophon" text="shënime publikimi"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Përkushtim"/>
+<l:gentext key="dedication" text="Përkushtim"/>
+<l:gentext key="Edition" text="Versioni"/>
+<l:gentext key="edition" text="Versioni"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ekuacion"/>
+<l:gentext key="equation" text="Ekuacion"/>
+<l:gentext key="Example" text="Shembull"/>
+<l:gentext key="example" text="Shembull"/>
+<l:gentext key="Figure" text="Figura"/>
+<l:gentext key="figure" text="Figura"/>
+<l:gentext key="Glossary" text="Fjalori"/>
+<l:gentext key="glossary" text="Fjalori"/>
+<l:gentext key="GlossSee" text="Shiko"/>
+<l:gentext key="glosssee" text="Shiko"/>
+<l:gentext key="GlossSeeAlso" text="Shiko Edhe"/>
+<l:gentext key="glossseealso" text="Shiko Edhe"/>
+<l:gentext key="IMPORTANT" text="ME RËNDËSI"/>
+<l:gentext key="important" text="Me rëndësi"/>
+<l:gentext key="Important" text="Me rëndësi"/>
+<l:gentext key="Index" text="Treguesi"/>
+<l:gentext key="index" text="Treguesi"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Shënime Legale"/>
+<l:gentext key="legalnotice" text="Shënime Legale"/>
+<l:gentext key="MsgAud" text="Publiku"/>
+<l:gentext key="msgaud" text="Publiku"/>
+<l:gentext key="MsgLevel" text="Niveli"/>
+<l:gentext key="msglevel" text="Niveli"/>
+<l:gentext key="MsgOrig" text="Origjina"/>
+<l:gentext key="msgorig" text="Origjina"/>
+<l:gentext key="NOTE" text="SHËNIM"/>
+<l:gentext key="Note" text="Shënim"/>
+<l:gentext key="note" text="Shënim"/>
+<l:gentext key="Part" text="Pjesa"/>
+<l:gentext key="part" text="Pjesa"/>
+<l:gentext key="Preface" text="Parathënie"/>
+<l:gentext key="preface" text="Parathënie"/>
+<l:gentext key="Procedure" text="Proçedura"/>
+<l:gentext key="procedure" text="Proçedura"/>
+<l:gentext key="ProductionSet" text="Prodhimi"/>
+<l:gentext key="PubDate" text="Data Publikimit"/>
+<l:gentext key="pubdate" text="Data e publikimit"/>
+<l:gentext key="Published" text="Publikuar"/>
+<l:gentext key="published" text="Publikuar"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="P &amp; P"/>
+<l:gentext key="qandadiv" text="P &amp; P"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="Q:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Riferim"/>
+<l:gentext key="reference" text="Riferim"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Emri"/>
+<l:gentext key="refname" text="Emri"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Përshkrimi"/>
+<l:gentext key="refsynopsisdiv" text="Përshkrimi"/>
+<l:gentext key="RevHistory" text="Ditari i Revizioneve"/>
+<l:gentext key="revhistory" text="Ditari i Revizioneve"/>
+<l:gentext key="revision" text="Revizioni"/>
+<l:gentext key="Revision" text="Revizioni"/>
+<l:gentext key="sect1" text="Seksioni"/>
+<l:gentext key="sect2" text="Seksioni"/>
+<l:gentext key="sect3" text="Seksioni"/>
+<l:gentext key="sect4" text="Seksioni"/>
+<l:gentext key="sect5" text="Seksioni"/>
+<l:gentext key="section" text="Seksioni"/>
+<l:gentext key="Section" text="Seksioni"/>
+<l:gentext key="see" text="shiko"/>
+<l:gentext key="See" text="Shiko"/>
+<l:gentext key="seealso" text="shiko gjithashtu"/>
+<l:gentext key="Seealso" text="Shiko gjithashtu"/>
+<l:gentext key="SeeAlso" text="Shiko Gjithashtu"/>
+<l:gentext key="set" text="Përmbledhje"/>
+<l:gentext key="Set" text="Përmbledhje"/>
+<l:gentext key="setindex" text="Treguesi i Përmbledhjes"/>
+<l:gentext key="SetIndex" text="Treguesi i Përmbledhjes"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="shënim anësor"/>
+<l:gentext key="step" text="hapi"/>
+<l:gentext key="Step" text="Hapi"/>
+<l:gentext key="table" text="Tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Propozim"/>
+<l:gentext key="TIP" text="PROPOZIM"/>
+<l:gentext key="Tip" text="Propozim"/>
+<l:gentext key="Warning" text="Paralajmërim"/>
+<l:gentext key="warning" text="Paralajmërim"/>
+<l:gentext key="WARNING" text="PARALAJMËRIM"/>
+<l:gentext key="and" text="dhe"/>
+<l:gentext key="by" text="nga"/>
+<l:gentext key="Edited" text="Shkruar"/>
+<l:gentext key="edited" text="Shkruar"/>
+<l:gentext key="Editedby" text="Shkruar nga"/>
+<l:gentext key="editedby" text="Shkruar nga"/>
+<l:gentext key="in" text="në"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="element jo ekzistues"/>
+<l:gentext key="notes" text="Shënime"/>
+<l:gentext key="Notes" text="Shënime"/>
+<l:gentext key="Pgs" text="Fq."/>
+<l:gentext key="pgs" text="Fq."/>
+<l:gentext key="Revisedby" text="Rishikuar nga: "/>
+<l:gentext key="revisedby" text="Rishikuar nga: "/>
+<l:gentext key="TableNotes" text="Shënime"/>
+<l:gentext key="tablenotes" text="Shënime"/>
+<l:gentext key="TableofContents" text="Tabela e përmbajtjes"/>
+<l:gentext key="tableofcontents" text="Tabela e Përmbajtjes"/>
+<l:gentext key="unexpectedelementname" text="Emër i papritur elementi"/>
+<l:gentext key="unsupported" text="nuk suportohet"/>
+<l:gentext key="xrefto" text="riferiment me"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Lista e Ekuacioneve"/>
+<l:gentext key="ListofEquations" text="Lista e Ekuacioneve"/>
+<l:gentext key="ListofExamples" text="Lista e Shembujve"/>
+<l:gentext key="listofexamples" text="Lista e Shembujve"/>
+<l:gentext key="ListofFigures" text="Lista e Figurave"/>
+<l:gentext key="listoffigures" text="Lista e Figurave"/>
+<l:gentext key="ListofProcedures" text="Lista e Proçedurave"/>
+<l:gentext key="listofprocedures" text="Lista e Proçedurave"/>
+<l:gentext key="listoftables" text="Lista e Tabelave"/>
+<l:gentext key="ListofTables" text="Lista e Tabelave"/>
+<l:gentext key="ListofUnknown" text="Lista e të Panjohurave"/>
+<l:gentext key="listofunknown" text="Lista e të Panjohurave"/>
+<l:gentext key="nav-home" text="Fillimi"/>
+<l:gentext key="nav-next" text="Vazhdo"/>
+<l:gentext key="nav-next-sibling" text="Para me Shpejtësi"/>
+<l:gentext key="nav-prev" text="Mbrapa"/>
+<l:gentext key="nav-prev-sibling" text="Mbrapsht me Shpejtësi"/>
+<l:gentext key="nav-up" text="Sipër"/>
+<l:gentext key="nav-toc" text="TeP"/>
+<l:gentext key="Draft" text="Kopje prove"/>
+<l:gentext key="above" text="sipër"/>
+<l:gentext key="below" text="poshtë"/>
+<l:gentext key="sectioncalled" text="seksioni i quajtur"/>
+<l:gentext key="index symbols" text="Simbole"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Shtesë %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitulli %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ekuacion %n. %t"/>
+<l:template name="example" text="Shembull %n. %t"/>
+<l:template name="figure" text="Figura %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Pjesa %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Proçedura %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Prodhimi %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Shtesë %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kapitulli %n. %t"/>
+<l:template name="part" text="Pjesa %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="P: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="seksioni i quajtur “%t”"/>
+<l:template name="refsection" text="seksioni i quajtur “%t”"/>
+<l:template name="refsect1" text="seksioni i quajtur “%t”"/>
+<l:template name="refsect2" text="seksioni i quajtur “%t”"/>
+<l:template name="refsect3" text="seksioni i quajtur “%t”"/>
+<l:template name="sect1" text="seksioni i quajtur “%t”"/>
+<l:template name="sect2" text="seksioni i quajtur “%t”"/>
+<l:template name="sect3" text="seksioni i quajtur “%t”"/>
+<l:template name="sect4" text="seksioni i quajtur “%t”"/>
+<l:template name="sect5" text="seksioni i quajtur “%t”"/>
+<l:template name="section" text="seksioni i quajtur “%t”"/>
+<l:template name="simplesect" text="seksioni i quajtur “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="P: %n"/>
+<l:template name="appendix" text="Shtesë %n"/>
+<l:template name="bridgehead" text="Seksioni %n"/>
+<l:template name="chapter" text="Kapitulli %n"/>
+<l:template name="equation" text="Ekuacion %n"/>
+<l:template name="example" text="Shembull %n"/>
+<l:template name="figure" text="Figura %n"/>
+<l:template name="part" text="Pjesa %n"/>
+<l:template name="procedure" text="Proçedura %n"/>
+<l:template name="productionset" text="Prodhimi %n"/>
+<l:template name="qandadiv" text="P &amp; P %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="Seksioni %n"/>
+<l:template name="sect2" text="Seksioni %n"/>
+<l:template name="sect3" text="Seksioni %n"/>
+<l:template name="sect4" text="Seksioni %n"/>
+<l:template name="sect5" text="Seksioni %n"/>
+<l:template name="section" text="Seksioni %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Shtesë %n, %t"/>
+<l:template name="bridgehead" text="Seksioni %n, “%t”"/>
+<l:template name="chapter" text="Kapitulli %n, %t"/>
+<l:template name="equation" text="Ekuacion %n, “%t”"/>
+<l:template name="example" text="Shembull %n, “%t”"/>
+<l:template name="figure" text="Figura %n, “%t”"/>
+<l:template name="part" text="Pjesa %n, “%t”"/>
+<l:template name="procedure" text="Proçedura %n, “%t”"/>
+<l:template name="productionset" text="Prodhimi %n, “%t”"/>
+<l:template name="qandadiv" text="P &amp; P %n, “%t”"/>
+<l:template name="refsect1" text="seksioni i quajtur “%t”"/>
+<l:template name="refsect2" text="seksioni i quajtur “%t”"/>
+<l:template name="refsect3" text="seksioni i quajtur “%t”"/>
+<l:template name="refsection" text="seksioni i quajtur “%t”"/>
+<l:template name="sect1" text="Seksioni %n, “%t”"/>
+<l:template name="sect2" text="Seksioni %n, “%t”"/>
+<l:template name="sect3" text="Seksioni %n, “%t”"/>
+<l:template name="sect4" text="Seksioni %n, “%t”"/>
+<l:template name="sect5" text="Seksioni %n, “%t”"/>
+<l:template name="section" text="Seksioni %n, “%t”"/>
+<l:template name="simplesect" text="seksioni i quajtur “%t”"/>
+<l:template name="table" text="Tabela %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" dhe "/>
+<l:template name="seplast" text=", dhe "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Shiko %t"/>
+<l:template name="seealso" text="Shiko Edhe %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publiku: "/>
+<l:template name="MsgLevel" text="Niveli: "/>
+<l:template name="MsgOrig" text="Origjina: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Janar"/>
+<l:template name="February" text="Shkurt"/>
+<l:template name="March" text="Mars"/>
+<l:template name="April" text="Prill"/>
+<l:template name="May" text="Maj"/>
+<l:template name="June" text="Qershor"/>
+<l:template name="July" text="Korrik"/>
+<l:template name="August" text="Gusht"/>
+<l:template name="September" text="Shtator"/>
+<l:template name="October" text="Tetor"/>
+<l:template name="November" text="Nëntor"/>
+<l:template name="December" text="Dhjetor"/>
+<l:template name="Monday" text="E hënë"/>
+<l:template name="Tuesday" text="E martë"/>
+<l:template name="Wednesday" text="E mërkurë"/>
+<l:template name="Thursday" text="E enjte"/>
+<l:template name="Friday" text="E premte"/>
+<l:template name="Saturday" text="E shtunë"/>
+<l:template name="Sunday" text="E djelë"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Shk"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Pri"/>
+<l:template name="May" text="Maj"/>
+<l:template name="Jun" text="Qer"/>
+<l:template name="Jul" text="Kor"/>
+<l:template name="Aug" text="Gsh"/>
+<l:template name="Sep" text="Sht"/>
+<l:template name="Oct" text="Tet"/>
+<l:template name="Nov" text="Nën"/>
+<l:template name="Dec" text="Dhj"/>
+<l:template name="Mon" text="Hën"/>
+<l:template name="Tue" text="Mar"/>
+<l:template name="Wed" text="Mër"/>
+<l:template name="Thu" text="Enj"/>
+<l:template name="Fri" text="Pre"/>
+<l:template name="Sat" text="Sht"/>
+<l:template name="Sun" text="Dje"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041c Albanian (ALBANIA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/sr.xml b/docs/xsl-generic/common/sr.xml
new file mode 100644
index 00000000..db5db1d9
--- /dev/null
+++ b/docs/xsl-generic/common/sr.xml
@@ -0,0 +1,714 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sr" english-language-name="Serbian in Cyrillic script">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sr.xml -->
+<!-- * -->
+<!-- * E-mail the edited sr.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Сажетак"/>
+<l:gentext key="abstract" text="сажетак"/>
+<l:gentext key="Answer" text="О:"/>
+<l:gentext key="answer" text="о:"/>
+<l:gentext key="Appendix" text="Додатак"/>
+<l:gentext key="appendix" text="додатак"/>
+<l:gentext key="Article" text="Чланак"/>
+<l:gentext key="article" text="чланак"/>
+<l:gentext key="Author" text="Аутор"/>
+<l:gentext key="Bibliography" text="Литература"/>
+<l:gentext key="bibliography" text="литература"/>
+<l:gentext key="Book" text="Књига"/>
+<l:gentext key="book" text="књига"/>
+<l:gentext key="CAUTION" text="УПОЗОРЕЊЕ"/>
+<l:gentext key="Caution" text="Упозорење"/>
+<l:gentext key="caution" text="упозорење"/>
+<l:gentext key="Chapter" text="Поглавље"/>
+<l:gentext key="chapter" text="поглавље"/>
+<l:gentext key="Colophon" text="Колофон"/>
+<l:gentext key="colophon" text="колофон"/>
+<l:gentext key="Copyright" text="Ауторска права"/>
+<l:gentext key="copyright" text="ауторска права"/>
+<l:gentext key="Dedication" text="Посвета"/>
+<l:gentext key="dedication" text="посвета"/>
+<l:gentext key="Edition" text="Издање"/>
+<l:gentext key="edition" text="издање"/>
+<l:gentext key="Editor" text="Уредник"/>
+<l:gentext key="Equation" text="Једначина"/>
+<l:gentext key="equation" text="једначина"/>
+<l:gentext key="Example" text="Пример"/>
+<l:gentext key="example" text="пример"/>
+<l:gentext key="Figure" text="Слика"/>
+<l:gentext key="figure" text="слика"/>
+<l:gentext key="Glossary" text="Речник"/>
+<l:gentext key="glossary" text="речник"/>
+<l:gentext key="GlossSee" text="Види"/>
+<l:gentext key="glosssee" text="види"/>
+<l:gentext key="GlossSeeAlso" text="Види такође"/>
+<l:gentext key="glossseealso" text="види такође"/>
+<l:gentext key="IMPORTANT" text="ВАЖНО"/>
+<l:gentext key="important" text="важно"/>
+<l:gentext key="Important" text="Важно"/>
+<l:gentext key="Index" text="Индекс"/>
+<l:gentext key="index" text="индекс"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Правна напомена"/>
+<l:gentext key="legalnotice" text="правна напомена"/>
+<l:gentext key="MsgAud" text="Публика"/>
+<l:gentext key="msgaud" text="публика"/>
+<l:gentext key="MsgLevel" text="Ниво"/>
+<l:gentext key="msglevel" text="ниво"/>
+<l:gentext key="MsgOrig" text="Извор"/>
+<l:gentext key="msgorig" text="извор"/>
+<l:gentext key="NOTE" text="ПРИМЕДБА"/>
+<l:gentext key="Note" text="Примедба"/>
+<l:gentext key="note" text="примедба"/>
+<l:gentext key="Part" text="Део"/>
+<l:gentext key="part" text="део"/>
+<l:gentext key="Preface" text="Предговор"/>
+<l:gentext key="preface" text="предговор"/>
+<l:gentext key="Procedure" text="Поступак"/>
+<l:gentext key="procedure" text="поступак"/>
+<l:gentext key="ProductionSet" text="Продукција"/>
+<l:gentext key="PubDate" text="Датум издавања"/>
+<l:gentext key="pubdate" text="датум издавања"/>
+<l:gentext key="Published" text="Издано"/>
+<l:gentext key="published" text="издано"/>
+<l:gentext key="Publisher" text="Издавач"/>
+<l:gentext key="Qandadiv" text="П и О"/>
+<l:gentext key="qandadiv" text="п и о"/>
+<l:gentext key="QandASet" text="Често постављана питања"/>
+<l:gentext key="Question" text="П:"/>
+<l:gentext key="question" text="п:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Референца"/>
+<l:gentext key="reference" text="референца"/>
+<l:gentext key="References" text="Референце"/>
+<l:gentext key="RefName" text="Име"/>
+<l:gentext key="refname" text="име"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Преглед"/>
+<l:gentext key="refsynopsisdiv" text="преглед"/>
+<l:gentext key="RevHistory" text="Историја ревизија"/>
+<l:gentext key="revhistory" text="историја ревизија"/>
+<l:gentext key="revision" text="ревизија"/>
+<l:gentext key="Revision" text="Ревизија"/>
+<l:gentext key="sect1" text="Одељак"/>
+<l:gentext key="sect2" text="Одељак"/>
+<l:gentext key="sect3" text="Одељак"/>
+<l:gentext key="sect4" text="Одељак"/>
+<l:gentext key="sect5" text="Одељак"/>
+<l:gentext key="section" text="одељак"/>
+<l:gentext key="Section" text="Одељак"/>
+<l:gentext key="see" text="види"/>
+<l:gentext key="See" text="Види"/>
+<l:gentext key="seealso" text="види такође"/>
+<l:gentext key="Seealso" text="Види такође"/>
+<l:gentext key="SeeAlso" text="Види такође"/>
+<l:gentext key="set" text="скуп"/>
+<l:gentext key="Set" text="Скуп"/>
+<l:gentext key="setindex" text="индекс скупа"/>
+<l:gentext key="SetIndex" text="Индекс скупа"/>
+<l:gentext key="Sidebar" text="Бочна трака"/>
+<l:gentext key="sidebar" text="бочна трака"/>
+<l:gentext key="step" text="корак"/>
+<l:gentext key="Step" text="Корак"/>
+<l:gentext key="table" text="табела"/>
+<l:gentext key="Table" text="Табела"/>
+<l:gentext key="task" text="задатак"/>
+<l:gentext key="Task" text="Задатак"/>
+<l:gentext key="tip" text="савет"/>
+<l:gentext key="TIP" text="САВЕТ"/>
+<l:gentext key="Tip" text="Савет"/>
+<l:gentext key="Warning" text="Упозорење"/>
+<l:gentext key="warning" text="упозорење"/>
+<l:gentext key="WARNING" text="УПОЗОРЕЊЕ"/>
+<l:gentext key="and" text="и"/>
+<l:gentext key="by" text="од"/>
+<l:gentext key="Edited" text="Уређено"/>
+<l:gentext key="edited" text="уређено"/>
+<l:gentext key="Editedby" text="Уредио(ла)"/>
+<l:gentext key="editedby" text="Уредио(ла)"/>
+<l:gentext key="in" text="у"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="непостојећи елемент"/>
+<l:gentext key="notes" text="примедбе"/>
+<l:gentext key="Notes" text="Примедбе"/>
+<l:gentext key="Pgs" text="Стр."/>
+<l:gentext key="pgs" text="стр."/>
+<l:gentext key="Revisedby" text="Прегледао(ла): "/>
+<l:gentext key="revisedby" text="прегледао(ла): "/>
+<l:gentext key="TableNotes" text="Примедбе"/>
+<l:gentext key="tablenotes" text="примедбе"/>
+<l:gentext key="TableofContents" text="Садржај"/>
+<l:gentext key="tableofcontents" text="садржај"/>
+<l:gentext key="unexpectedelementname" text="неочекивано име елемента"/>
+<l:gentext key="unsupported" text="није подржано"/>
+<l:gentext key="xrefto" text="унакрсна референца на"/>
+<l:gentext key="Authors" text="Аутори"/>
+<l:gentext key="copyeditor" text="Издавачки уредник"/>
+<l:gentext key="graphicdesigner" text="Графички дизајнер"/>
+<l:gentext key="productioneditor" text="Извршни уредник"/>
+<l:gentext key="technicaleditor" text="Технички уредник"/>
+<l:gentext key="translator" text="Преводилац"/>
+<l:gentext key="listofequations" text="списак једначина"/>
+<l:gentext key="ListofEquations" text="Списак једначина"/>
+<l:gentext key="ListofExamples" text="Списак примера"/>
+<l:gentext key="listofexamples" text="списак примера"/>
+<l:gentext key="ListofFigures" text="Списак слика"/>
+<l:gentext key="listoffigures" text="списак слика"/>
+<l:gentext key="ListofProcedures" text="Списак поступака"/>
+<l:gentext key="listofprocedures" text="списак поступака"/>
+<l:gentext key="listoftables" text="списак табела"/>
+<l:gentext key="ListofTables" text="Списак табела"/>
+<l:gentext key="ListofUnknown" text="списак непознатих"/>
+<l:gentext key="listofunknown" text="Списак непознатих"/>
+<l:gentext key="nav-home" text="Почетак"/>
+<l:gentext key="nav-next" text="Следећи"/>
+<l:gentext key="nav-next-sibling" text="Брзо напред"/>
+<l:gentext key="nav-prev" text="Претходни"/>
+<l:gentext key="nav-prev-sibling" text="Брзо назад"/>
+<l:gentext key="nav-up" text="Врх"/>
+<l:gentext key="nav-toc" text="Садр."/>
+<l:gentext key="Draft" text="Нацрт"/>
+<l:gentext key="above" text="изнад"/>
+<l:gentext key="below" text="испод"/>
+<l:gentext key="sectioncalled" text="одељак под именом"/>
+<l:gentext key="index symbols" text="Симболи"/>
+<l:gentext key="lowercase.alpha" text="абвгдђежзијклљмнњопрстћуфхцчџш"/>
+<l:gentext key="uppercase.alpha" text="АБВГДЂЕЖЗИЈКЛЉМНЊОПРСТЋУФХЦЧЏШ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="име-презиме"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Додатак %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Поглавље %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Једначина %n. %t"/>
+<l:template name="example" text="Пример %n. %t"/>
+<l:template name="figure" text="Слика %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Део %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Поступак %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Продукција %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Табела %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Додатак %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Поглавље %n. %t"/>
+<l:template name="part" text="Део %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="П: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="П: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" у %o"/>
+<l:template name="olink.page.citation" text=" (стр. %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(страна %p)"/>
+<l:template name="docname" text=" у %o"/>
+<l:template name="docnamelong" text=" у документу са насловом %o"/>
+<l:template name="pageabbrev" text="(стр. %p)"/>
+<l:template name="Page" text="Страна %p"/>
+<l:template name="bridgehead" text="одељак под именом „%t“"/>
+<l:template name="refsection" text="одељак под именом „%t“"/>
+<l:template name="refsect1" text="одељак под именом „%t“"/>
+<l:template name="refsect2" text="одељак под именом „%t“"/>
+<l:template name="refsect3" text="одељак под именом „%t“"/>
+<l:template name="sect1" text="одељак под именом „%t“"/>
+<l:template name="sect2" text="одељак под именом „%t“"/>
+<l:template name="sect3" text="одељак под именом „%t“"/>
+<l:template name="sect4" text="одељак под именом „%t“"/>
+<l:template name="sect5" text="одељак под именом „%t“"/>
+<l:template name="section" text="одељак под именом „%t“"/>
+<l:template name="simplesect" text="одељак под именом „%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="О: %n"/>
+<l:template name="appendix" text="Додатак %n"/>
+<l:template name="bridgehead" text="Одељак %n"/>
+<l:template name="chapter" text="Поглавље %n"/>
+<l:template name="equation" text="Једначина %n"/>
+<l:template name="example" text="Пример %n"/>
+<l:template name="figure" text="Слика %n"/>
+<l:template name="part" text="Део %n"/>
+<l:template name="procedure" text="Поступак %n"/>
+<l:template name="productionset" text="Продукција %n"/>
+<l:template name="qandadiv" text="П и О %n"/>
+<l:template name="qandaentry" text="П: %n"/>
+<l:template name="question" text="П: %n"/>
+<l:template name="sect1" text="Одељак %n"/>
+<l:template name="sect2" text="Одељак %n"/>
+<l:template name="sect3" text="Одељак %n"/>
+<l:template name="sect4" text="Одељак %n"/>
+<l:template name="sect5" text="Одељак %n"/>
+<l:template name="section" text="Одељак %n"/>
+<l:template name="table" text="Табела %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Додатак %n, %t"/>
+<l:template name="bridgehead" text="Одељак %n, „%t“"/>
+<l:template name="chapter" text="Поглавље %n, %t"/>
+<l:template name="equation" text="Једначина %n, „%t“"/>
+<l:template name="example" text="Пример %n, „%t“"/>
+<l:template name="figure" text="Слика %n, „%t“"/>
+<l:template name="part" text="Део %n, „%t“"/>
+<l:template name="procedure" text="Поступак %n, „%t“"/>
+<l:template name="productionset" text="Продукција %n, „%t“"/>
+<l:template name="qandadiv" text="П и О %n, „%t“"/>
+<l:template name="refsect1" text="одељак под именом „%t“"/>
+<l:template name="refsect2" text="одељак под именом „%t“"/>
+<l:template name="refsect3" text="одељак под именом „%t“"/>
+<l:template name="refsection" text="одељак под именом „%t“"/>
+<l:template name="sect1" text="Одељак %n, „%t“"/>
+<l:template name="sect2" text="Одељак %n, „%t“"/>
+<l:template name="sect3" text="Одељак %n, „%t“"/>
+<l:template name="sect4" text="Одељак %n, „%t“"/>
+<l:template name="sect5" text="Одељак %n, „%t“"/>
+<l:template name="section" text="Одељак %n, „%t“"/>
+<l:template name="simplesect" text="одељак под именом „%t“"/>
+<l:template name="table" text="Табела %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" и "/>
+<l:template name="seplast" text=", и "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Види %t"/>
+<l:template name="seealso" text="Види такође %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Публика: "/>
+<l:template name="MsgLevel" text="Ниво: "/>
+<l:template name="MsgOrig" text="Извор: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y."/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Дефиниција: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="јануар"/>
+<l:template name="February" text="фебруар"/>
+<l:template name="March" text="март"/>
+<l:template name="April" text="април"/>
+<l:template name="May" text="мај"/>
+<l:template name="June" text="јун"/>
+<l:template name="July" text="јул"/>
+<l:template name="August" text="август"/>
+<l:template name="September" text="септембар"/>
+<l:template name="October" text="октобар"/>
+<l:template name="November" text="новембар"/>
+<l:template name="December" text="децембар"/>
+<l:template name="Monday" text="понедељак"/>
+<l:template name="Tuesday" text="уторак"/>
+<l:template name="Wednesday" text="среда"/>
+<l:template name="Thursday" text="четвртак"/>
+<l:template name="Friday" text="петак"/>
+<l:template name="Saturday" text="субота"/>
+<l:template name="Sunday" text="недеља"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="јан"/>
+<l:template name="Feb" text="феб"/>
+<l:template name="Mar" text="мар"/>
+<l:template name="Apr" text="апр"/>
+<l:template name="May" text="мај"/>
+<l:template name="Jun" text="јун"/>
+<l:template name="Jul" text="јул"/>
+<l:template name="Aug" text="авг"/>
+<l:template name="Sep" text="сеп"/>
+<l:template name="Oct" text="окт"/>
+<l:template name="Nov" text="нов"/>
+<l:template name="Dec" text="дец"/>
+<l:template name="Mon" text="пон"/>
+<l:template name="Tue" text="уто"/>
+<l:template name="Wed" text="сре"/>
+<l:template name="Thu" text="чет"/>
+<l:template name="Fri" text="пет"/>
+<l:template name="Sat" text="суб"/>
+<l:template name="Sun" text="нед"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0C1A Serbian (Cyrillic)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Симболи</l:l>
+<l:l i="1">А</l:l>
+<l:l i="1">а</l:l>
+<l:l i="2">Б</l:l>
+<l:l i="2">б</l:l>
+<l:l i="3">В</l:l>
+<l:l i="3">в</l:l>
+<l:l i="4">Г</l:l>
+<l:l i="4">г</l:l>
+<l:l i="5">Д</l:l>
+<l:l i="5">д</l:l>
+<l:l i="6">Ђ</l:l>
+<l:l i="6">ђ</l:l>
+<l:l i="7">Е</l:l>
+<l:l i="7">е</l:l>
+<l:l i="8">Ж</l:l>
+<l:l i="8">ж</l:l>
+<l:l i="9">З</l:l>
+<l:l i="9">з</l:l>
+<l:l i="10">И</l:l>
+<l:l i="10">и</l:l>
+<l:l i="11">Ј</l:l>
+<l:l i="11">ј</l:l>
+<l:l i="12">К</l:l>
+<l:l i="12">к</l:l>
+<l:l i="13">Л</l:l>
+<l:l i="13">л</l:l>
+<l:l i="14">Љ</l:l>
+<l:l i="14">љ</l:l>
+<l:l i="15">М</l:l>
+<l:l i="15">м</l:l>
+<l:l i="16">Н</l:l>
+<l:l i="16">н</l:l>
+<l:l i="17">Њ</l:l>
+<l:l i="17">њ</l:l>
+<l:l i="18">О</l:l>
+<l:l i="18">о</l:l>
+<l:l i="19">П</l:l>
+<l:l i="19">п</l:l>
+<l:l i="20">Р</l:l>
+<l:l i="20">р</l:l>
+<l:l i="21">С</l:l>
+<l:l i="21">с</l:l>
+<l:l i="22">Т</l:l>
+<l:l i="22">т</l:l>
+<l:l i="23">Ћ</l:l>
+<l:l i="23">ћ</l:l>
+<l:l i="24">У</l:l>
+<l:l i="24">у</l:l>
+<l:l i="25">Ф</l:l>
+<l:l i="25">ф</l:l>
+<l:l i="26">Х</l:l>
+<l:l i="26">х</l:l>
+<l:l i="27">Ц</l:l>
+<l:l i="27">ц</l:l>
+<l:l i="28">Ч</l:l>
+<l:l i="28">ч</l:l>
+<l:l i="29">Џ</l:l>
+<l:l i="29">џ</l:l>
+<l:l i="30">Ш</l:l>
+<l:l i="30">ш</l:l>
+<l:l i="31">A</l:l>
+<l:l i="31">a</l:l>
+<l:l i="32">B</l:l>
+<l:l i="32">b</l:l>
+<l:l i="33">C</l:l>
+<l:l i="33">c</l:l>
+<l:l i="34">D</l:l>
+<l:l i="34">d</l:l>
+<l:l i="35">E</l:l>
+<l:l i="35">e</l:l>
+<l:l i="36">F</l:l>
+<l:l i="36">f</l:l>
+<l:l i="37">G</l:l>
+<l:l i="37">g</l:l>
+<l:l i="38">H</l:l>
+<l:l i="38">h</l:l>
+<l:l i="39">I</l:l>
+<l:l i="39">i</l:l>
+<l:l i="40">J</l:l>
+<l:l i="40">j</l:l>
+<l:l i="41">K</l:l>
+<l:l i="41">k</l:l>
+<l:l i="42">L</l:l>
+<l:l i="42">l</l:l>
+<l:l i="43">M</l:l>
+<l:l i="43">m</l:l>
+<l:l i="44">N</l:l>
+<l:l i="44">n</l:l>
+<l:l i="45">O</l:l>
+<l:l i="45">o</l:l>
+<l:l i="46">P</l:l>
+<l:l i="46">p</l:l>
+<l:l i="47">Q</l:l>
+<l:l i="47">Q</l:l>
+<l:l i="48">R</l:l>
+<l:l i="48">r</l:l>
+<l:l i="49">S</l:l>
+<l:l i="49">s</l:l>
+<l:l i="50">T</l:l>
+<l:l i="50">t</l:l>
+<l:l i="51">U</l:l>
+<l:l i="51">u</l:l>
+<l:l i="52">V</l:l>
+<l:l i="52">v</l:l>
+<l:l i="53">W</l:l>
+<l:l i="53">w</l:l>
+<l:l i="54">X</l:l>
+<l:l i="54">x</l:l>
+<l:l i="55">Y</l:l>
+<l:l i="55">y</l:l>
+<l:l i="56">Z</l:l>
+<l:l i="56">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/sr_Latn.xml b/docs/xsl-generic/common/sr_Latn.xml
new file mode 100644
index 00000000..a6e03d0e
--- /dev/null
+++ b/docs/xsl-generic/common/sr_Latn.xml
@@ -0,0 +1,673 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sr_latn" english-language-name="Serbian in Latin script">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sr_Latn.xml -->
+<!-- * -->
+<!-- * E-mail the edited sr_Latn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sažetak"/>
+<l:gentext key="abstract" text="sažetak"/>
+<l:gentext key="Answer" text="O:"/>
+<l:gentext key="answer" text="o:"/>
+<l:gentext key="Appendix" text="Dodatak"/>
+<l:gentext key="appendix" text="dodatak"/>
+<l:gentext key="Article" text="Članak"/>
+<l:gentext key="article" text="članak"/>
+<l:gentext key="Author" text="Autor"/>
+<l:gentext key="Bibliography" text="Literatura"/>
+<l:gentext key="bibliography" text="literatura"/>
+<l:gentext key="Book" text="Knjiga"/>
+<l:gentext key="book" text="knjiga"/>
+<l:gentext key="CAUTION" text="UPOZORENJE"/>
+<l:gentext key="Caution" text="Upozorenje"/>
+<l:gentext key="caution" text="upozorenje"/>
+<l:gentext key="Chapter" text="Poglavlje"/>
+<l:gentext key="chapter" text="poglavlje"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Autorska prava"/>
+<l:gentext key="copyright" text="autorska prava"/>
+<l:gentext key="Dedication" text="Posveta"/>
+<l:gentext key="dedication" text="posveta"/>
+<l:gentext key="Edition" text="Izdanje"/>
+<l:gentext key="edition" text="izdanje"/>
+<l:gentext key="Editor" text="Urednik"/>
+<l:gentext key="Equation" text="Jednačina"/>
+<l:gentext key="equation" text="jednačina"/>
+<l:gentext key="Example" text="Primer"/>
+<l:gentext key="example" text="primer"/>
+<l:gentext key="Figure" text="Slika"/>
+<l:gentext key="figure" text="slika"/>
+<l:gentext key="Glossary" text="Rečnik"/>
+<l:gentext key="glossary" text="rečnik"/>
+<l:gentext key="GlossSee" text="Vidi"/>
+<l:gentext key="glosssee" text="vidi"/>
+<l:gentext key="GlossSeeAlso" text="Vidi takođe"/>
+<l:gentext key="glossseealso" text="vidi takođe"/>
+<l:gentext key="IMPORTANT" text="VAŽNO"/>
+<l:gentext key="important" text="važno"/>
+<l:gentext key="Important" text="Važno"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Pravna napomena"/>
+<l:gentext key="legalnotice" text="pravna napomena"/>
+<l:gentext key="MsgAud" text="Publika"/>
+<l:gentext key="msgaud" text="publika"/>
+<l:gentext key="MsgLevel" text="Nivo"/>
+<l:gentext key="msglevel" text="nivo"/>
+<l:gentext key="MsgOrig" text="Izvor"/>
+<l:gentext key="msgorig" text="izvor"/>
+<l:gentext key="NOTE" text="PRIMEDBA"/>
+<l:gentext key="Note" text="Primedba"/>
+<l:gentext key="note" text="primedba"/>
+<l:gentext key="Part" text="Deo"/>
+<l:gentext key="part" text="deo"/>
+<l:gentext key="Preface" text="Predgovor"/>
+<l:gentext key="preface" text="predgovor"/>
+<l:gentext key="Procedure" text="Postupak"/>
+<l:gentext key="procedure" text="postupak"/>
+<l:gentext key="ProductionSet" text="Produkcija"/>
+<l:gentext key="PubDate" text="Datum izdavanja"/>
+<l:gentext key="pubdate" text="datum izdavanja"/>
+<l:gentext key="Published" text="Izdano"/>
+<l:gentext key="published" text="izdano"/>
+<l:gentext key="Publisher" text="Izdavač"/>
+<l:gentext key="Qandadiv" text="P i O"/>
+<l:gentext key="qandadiv" text="p i o"/>
+<l:gentext key="QandASet" text="Često postavljana pitanja"/>
+<l:gentext key="Question" text="P:"/>
+<l:gentext key="question" text="p:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referenca"/>
+<l:gentext key="reference" text="referenca"/>
+<l:gentext key="References" text="Reference"/>
+<l:gentext key="RefName" text="Ime"/>
+<l:gentext key="refname" text="ime"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Pregled"/>
+<l:gentext key="refsynopsisdiv" text="pregled"/>
+<l:gentext key="RevHistory" text="Istorija revizija"/>
+<l:gentext key="revhistory" text="istorija revizija"/>
+<l:gentext key="revision" text="revizija"/>
+<l:gentext key="Revision" text="Revizija"/>
+<l:gentext key="sect1" text="Odeljak"/>
+<l:gentext key="sect2" text="Odeljak"/>
+<l:gentext key="sect3" text="Odeljak"/>
+<l:gentext key="sect4" text="Odeljak"/>
+<l:gentext key="sect5" text="Odeljak"/>
+<l:gentext key="section" text="odeljak"/>
+<l:gentext key="Section" text="Odeljak"/>
+<l:gentext key="see" text="vidi"/>
+<l:gentext key="See" text="Vidi"/>
+<l:gentext key="seealso" text="vidi takođe"/>
+<l:gentext key="Seealso" text="Vidi takođe"/>
+<l:gentext key="SeeAlso" text="Vidi takođe"/>
+<l:gentext key="set" text="skup"/>
+<l:gentext key="Set" text="Skup"/>
+<l:gentext key="setindex" text="indeks skupa"/>
+<l:gentext key="SetIndex" text="Indeks skupa"/>
+<l:gentext key="Sidebar" text="Bočna traka"/>
+<l:gentext key="sidebar" text="bočna traka"/>
+<l:gentext key="step" text="korak"/>
+<l:gentext key="Step" text="Korak"/>
+<l:gentext key="table" text="tabela"/>
+<l:gentext key="Table" text="Tabela"/>
+<l:gentext key="task" text="zadatak"/>
+<l:gentext key="Task" text="Zadatak"/>
+<l:gentext key="tip" text="savet"/>
+<l:gentext key="TIP" text="SAVET"/>
+<l:gentext key="Tip" text="Savet"/>
+<l:gentext key="Warning" text="Upozorenje"/>
+<l:gentext key="warning" text="upozorenje"/>
+<l:gentext key="WARNING" text="UPOZORENJE"/>
+<l:gentext key="and" text="i"/>
+<l:gentext key="by" text="od"/>
+<l:gentext key="Edited" text="Uređeno"/>
+<l:gentext key="edited" text="uređeno"/>
+<l:gentext key="Editedby" text="Uredio(la)"/>
+<l:gentext key="editedby" text="Uredio(la)"/>
+<l:gentext key="in" text="u"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="nepostojeći element"/>
+<l:gentext key="notes" text="primedbe"/>
+<l:gentext key="Notes" text="Primedbe"/>
+<l:gentext key="Pgs" text="Str."/>
+<l:gentext key="pgs" text="str."/>
+<l:gentext key="Revisedby" text="Pregledao(la): "/>
+<l:gentext key="revisedby" text="pregledao(la): "/>
+<l:gentext key="TableNotes" text="Primedbe"/>
+<l:gentext key="tablenotes" text="primedbe"/>
+<l:gentext key="TableofContents" text="Sadržaj"/>
+<l:gentext key="tableofcontents" text="sadržaj"/>
+<l:gentext key="unexpectedelementname" text="neočekivano ime elementa"/>
+<l:gentext key="unsupported" text="nije podržano"/>
+<l:gentext key="xrefto" text="unakrsna referenca na"/>
+<l:gentext key="Authors" text="Autori"/>
+<l:gentext key="copyeditor" text="Izdavački urednik"/>
+<l:gentext key="graphicdesigner" text="Grafički dizajner"/>
+<l:gentext key="productioneditor" text="Izvršni urednik"/>
+<l:gentext key="technicaleditor" text="Tehnički urednik"/>
+<l:gentext key="translator" text="Prevodilac"/>
+<l:gentext key="listofequations" text="spisak jednačina"/>
+<l:gentext key="ListofEquations" text="Spisak jednačina"/>
+<l:gentext key="ListofExamples" text="Spisak primera"/>
+<l:gentext key="listofexamples" text="spisak primera"/>
+<l:gentext key="ListofFigures" text="Spisak slika"/>
+<l:gentext key="listoffigures" text="spisak slika"/>
+<l:gentext key="ListofProcedures" text="Spisak postupaka"/>
+<l:gentext key="listofprocedures" text="spisak postupaka"/>
+<l:gentext key="listoftables" text="spisak tabela"/>
+<l:gentext key="ListofTables" text="Spisak tabela"/>
+<l:gentext key="ListofUnknown" text="spisak nepoznatih"/>
+<l:gentext key="listofunknown" text="Spisak nepoznatih"/>
+<l:gentext key="nav-home" text="Početak"/>
+<l:gentext key="nav-next" text="Sledeći"/>
+<l:gentext key="nav-next-sibling" text="Brzo napred"/>
+<l:gentext key="nav-prev" text="Prethodni"/>
+<l:gentext key="nav-prev-sibling" text="Brzo nazad"/>
+<l:gentext key="nav-up" text="Vrh"/>
+<l:gentext key="nav-toc" text="Sadr."/>
+<l:gentext key="Draft" text="Nacrt"/>
+<l:gentext key="above" text="iznad"/>
+<l:gentext key="below" text="ispod"/>
+<l:gentext key="sectioncalled" text="odeljak pod imenom"/>
+<l:gentext key="index symbols" text="Simboli"/>
+<l:gentext key="lowercase.alpha" text="abcčćdđefghijklmnopqrsštuvwxyzž"/>
+<l:gentext key="uppercase.alpha" text="ABCČĆDĐEFGHIJKLMNOPQRSŠTUVWXYZŽ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="„"/>
+<l:dingbat key="endquote" text="“"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="ime-prezime"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Jednačina %n. %t"/>
+<l:template name="example" text="Primer %n. %t"/>
+<l:template name="figure" text="Slika %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Deo %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Postupak %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produkcija %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabela %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t"/>
+<l:template name="taskprerequisites" text="%t"/>
+<l:template name="taskrelated" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Dodatak %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Poglavlje %n. %t"/>
+<l:template name="part" text="Deo %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" u %o"/>
+<l:template name="olink.page.citation" text=" (str. %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(strana %p)"/>
+<l:template name="docname" text=" u %o"/>
+<l:template name="docnamelong" text=" u dokumentu sa naslovom %o"/>
+<l:template name="pageabbrev" text="(str. %p)"/>
+<l:template name="Page" text="Strana %p"/>
+<l:template name="bridgehead" text="odeljak pod imenom „%t“"/>
+<l:template name="refsection" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect1" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect2" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect3" text="odeljak pod imenom „%t“"/>
+<l:template name="sect1" text="odeljak pod imenom „%t“"/>
+<l:template name="sect2" text="odeljak pod imenom „%t“"/>
+<l:template name="sect3" text="odeljak pod imenom „%t“"/>
+<l:template name="sect4" text="odeljak pod imenom „%t“"/>
+<l:template name="sect5" text="odeljak pod imenom „%t“"/>
+<l:template name="section" text="odeljak pod imenom „%t“"/>
+<l:template name="simplesect" text="odeljak pod imenom „%t“"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="O: %n"/>
+<l:template name="appendix" text="Dodatak %n"/>
+<l:template name="bridgehead" text="Odeljak %n"/>
+<l:template name="chapter" text="Poglavlje %n"/>
+<l:template name="equation" text="Jednačina %n"/>
+<l:template name="example" text="Primer %n"/>
+<l:template name="figure" text="Slika %n"/>
+<l:template name="part" text="Deo %n"/>
+<l:template name="procedure" text="Postupak %n"/>
+<l:template name="productionset" text="Produkcija %n"/>
+<l:template name="qandadiv" text="P i O %n"/>
+<l:template name="qandaentry" text="P: %n"/>
+<l:template name="question" text="P: %n"/>
+<l:template name="sect1" text="Odeljak %n"/>
+<l:template name="sect2" text="Odeljak %n"/>
+<l:template name="sect3" text="Odeljak %n"/>
+<l:template name="sect4" text="Odeljak %n"/>
+<l:template name="sect5" text="Odeljak %n"/>
+<l:template name="section" text="Odeljak %n"/>
+<l:template name="table" text="Tabela %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Dodatak %n, %t"/>
+<l:template name="bridgehead" text="Odeljak %n, „%t“"/>
+<l:template name="chapter" text="Poglavlje %n, %t"/>
+<l:template name="equation" text="Jednačina %n, „%t“"/>
+<l:template name="example" text="Primer %n, „%t“"/>
+<l:template name="figure" text="Slika %n, „%t“"/>
+<l:template name="part" text="Deo %n, „%t“"/>
+<l:template name="procedure" text="Postupak %n, „%t“"/>
+<l:template name="productionset" text="Produkcija %n, „%t“"/>
+<l:template name="qandadiv" text="P i O %n, „%t“"/>
+<l:template name="refsect1" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect2" text="odeljak pod imenom „%t“"/>
+<l:template name="refsect3" text="odeljak pod imenom „%t“"/>
+<l:template name="refsection" text="odeljak pod imenom „%t“"/>
+<l:template name="sect1" text="Odeljak %n, „%t“"/>
+<l:template name="sect2" text="Odeljak %n, „%t“"/>
+<l:template name="sect3" text="Odeljak %n, „%t“"/>
+<l:template name="sect4" text="Odeljak %n, „%t“"/>
+<l:template name="sect5" text="Odeljak %n, „%t“"/>
+<l:template name="section" text="Odeljak %n, „%t“"/>
+<l:template name="simplesect" text="odeljak pod imenom „%t“"/>
+<l:template name="table" text="Tabela %n, „%t“"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" i "/>
+<l:template name="seplast" text=", i "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Vidi %t"/>
+<l:template name="seealso" text="Vidi takođe %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Publika: "/>
+<l:template name="MsgLevel" text="Nivo: "/>
+<l:template name="MsgOrig" text="Izvor: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d.m.Y."/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definicija: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="januar"/>
+<l:template name="February" text="februar"/>
+<l:template name="March" text="mart"/>
+<l:template name="April" text="april"/>
+<l:template name="May" text="maj"/>
+<l:template name="June" text="jun"/>
+<l:template name="July" text="jul"/>
+<l:template name="August" text="avgust"/>
+<l:template name="September" text="septembar"/>
+<l:template name="October" text="oktobar"/>
+<l:template name="November" text="novembar"/>
+<l:template name="December" text="decembar"/>
+<l:template name="Monday" text="ponedeljak"/>
+<l:template name="Tuesday" text="utorak"/>
+<l:template name="Wednesday" text="sreda"/>
+<l:template name="Thursday" text="četvrtak"/>
+<l:template name="Friday" text="petak"/>
+<l:template name="Saturday" text="subota"/>
+<l:template name="Sunday" text="nedelja"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="jan"/>
+<l:template name="Feb" text="feb"/>
+<l:template name="Mar" text="mar"/>
+<l:template name="Apr" text="apr"/>
+<l:template name="May" text="maj"/>
+<l:template name="Jun" text="jun"/>
+<l:template name="Jul" text="jul"/>
+<l:template name="Aug" text="avg"/>
+<l:template name="Sep" text="sep"/>
+<l:template name="Oct" text="okt"/>
+<l:template name="Nov" text="nov"/>
+<l:template name="Dec" text="dec"/>
+<l:template name="Mon" text="pon"/>
+<l:template name="Tue" text="uto"/>
+<l:template name="Wed" text="sre"/>
+<l:template name="Thu" text="čet"/>
+<l:template name="Fri" text="pet"/>
+<l:template name="Sat" text="sub"/>
+<l:template name="Sun" text="ned"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x081a Serbian (Latin)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Simboli</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">Č</l:l>
+<l:l i="4">č</l:l>
+<l:l i="5">Ć</l:l>
+<l:l i="5">ć</l:l>
+<l:l i="6">D</l:l>
+<l:l i="6">d</l:l>
+<l:l i="7">DŽ</l:l>
+<l:l i="7">Dž</l:l>
+<l:l i="7">dž</l:l>
+<l:l i="8">Đ</l:l>
+<l:l i="8">đ</l:l>
+<l:l i="9">E</l:l>
+<l:l i="9">e</l:l>
+<l:l i="10">F</l:l>
+<l:l i="10">f</l:l>
+<l:l i="11">G</l:l>
+<l:l i="11">g</l:l>
+<l:l i="12">H</l:l>
+<l:l i="12">h</l:l>
+<l:l i="13">I</l:l>
+<l:l i="13">i</l:l>
+<l:l i="14">J</l:l>
+<l:l i="14">j</l:l>
+<l:l i="15">K</l:l>
+<l:l i="15">k</l:l>
+<l:l i="16">L</l:l>
+<l:l i="16">l</l:l>
+<l:l i="17">LJ</l:l>
+<l:l i="17">Lj</l:l>
+<l:l i="17">lj</l:l>
+<l:l i="18">M</l:l>
+<l:l i="18">m</l:l>
+<l:l i="19">N</l:l>
+<l:l i="19">n</l:l>
+<l:l i="20">NJ</l:l>
+<l:l i="20">Nj</l:l>
+<l:l i="20">nj</l:l>
+<l:l i="21">O</l:l>
+<l:l i="21">o</l:l>
+<l:l i="22">P</l:l>
+<l:l i="22">p</l:l>
+<l:l i="23">Q</l:l>
+<l:l i="23">Q</l:l>
+<l:l i="24">R</l:l>
+<l:l i="24">r</l:l>
+<l:l i="25">S</l:l>
+<l:l i="25">s</l:l>
+<l:l i="26">Š</l:l>
+<l:l i="26">š</l:l>
+<l:l i="27">T</l:l>
+<l:l i="27">t</l:l>
+<l:l i="28">U</l:l>
+<l:l i="28">u</l:l>
+<l:l i="29">V</l:l>
+<l:l i="29">v</l:l>
+<l:l i="30">W</l:l>
+<l:l i="30">w</l:l>
+<l:l i="31">X</l:l>
+<l:l i="31">x</l:l>
+<l:l i="32">Y</l:l>
+<l:l i="32">y</l:l>
+<l:l i="33">Z</l:l>
+<l:l i="33">z</l:l>
+<l:l i="34">Ž</l:l>
+<l:l i="34">ž</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/stripns.xsl b/docs/xsl-generic/common/stripns.xsl
new file mode 100644
index 00000000..dd1cd7f2
--- /dev/null
+++ b/docs/xsl-generic/common/stripns.xsl
@@ -0,0 +1,342 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:NodeInfo="http://org.apache.xalan.lib.NodeInfo"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="db ng exsl saxon NodeInfo"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: stripns.xsl 7267 2007-08-22 12:20:28Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- put an xml:base attribute on the root element -->
+<xsl:template match="/*" mode="stripNS">
+ <xsl:choose>
+ <xsl:when test="self::ng:* or self::db:*">
+ <xsl:element name="{local-name(.)}">
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="add-xml-base"/>
+
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="add-xml-base"/>
+
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="stripNS">
+ <xsl:choose>
+ <xsl:when test="self::ng:* or self::db:*">
+ <xsl:element name="{local-name(.)}">
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="db:info" mode="stripNS">
+ <xsl:variable name="info">
+ <xsl:choose>
+ <xsl:when test="parent::db:article
+ |parent::db:appendix
+ |parent::db:bibliography
+ |parent::db:book
+ |parent::db:chapter
+ |parent::db:glossary
+ |parent::db:index
+ |parent::db:part
+ |parent::db:preface
+ |parent::db:refentry
+ |parent::db:reference
+ |parent::db:refsect1
+ |parent::db:refsect2
+ |parent::db:refsect3
+ |parent::db:refsection
+ |parent::db:refsynopsisdiv
+ |parent::db:sect1
+ |parent::db:sect2
+ |parent::db:sect3
+ |parent::db:sect4
+ |parent::db:sect5
+ |parent::db:section
+ |parent::db:setindex
+ |parent::db:set
+ |parent::db:slides
+ |parent::db:sidebar">
+ <xsl:value-of select="local-name(parent::*)"/>
+ <xsl:text>info</xsl:text>
+ </xsl:when>
+ <xsl:when test="parent::db:audioobject
+ |parent::db:imageobject
+ |parent::db:inlinemediaobject
+ |parent::db:mediaobject
+ |parent::db:mediaobjectco
+ |parent::db:textobject
+ |parent::db:videoobject">
+ <xsl:text>objectinfo</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>blockinfo</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$info}">
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:element>
+
+ <xsl:if test="(not(../db:title) and not(../ng:title))
+ and ($info = 'prefaceinfo'
+ or $info = 'chapterinfo'
+ or $info = 'sectioninfo'
+ or $info = 'sect1info'
+ or $info = 'sect2info'
+ or $info = 'sect3info'
+ or $info = 'sect4info'
+ or $info = 'sect5info'
+ or $info = 'refsectioninfo'
+ or $info = 'refsect1info'
+ or $info = 'refsect2info'
+ or $info = 'refsect3info'
+ or $info = 'blockinfo'
+ or $info = 'appendixinfo')">
+ <xsl:apply-templates select="db:title|ng:title" mode="stripNS"/>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template match="ng:link|db:link" mode="stripNS">
+ <xsl:variable xmlns:xlink="http://www.w3.org/1999/xlink"
+ name="href" select="@xlink:href|@href"/>
+ <xsl:choose>
+ <xsl:when test="$href != '' and not(starts-with($href,'#'))">
+ <ulink url="{$href}">
+ <xsl:for-each select="@*">
+ <xsl:if test="local-name(.) != 'href'
+ and name(.) != 'version'
+ and name(.) != 'xml:id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </ulink>
+ </xsl:when>
+ <xsl:when test="$href != '' and starts-with($href,'#')">
+ <link linkend="{substring-after($href,'#')}">
+ <xsl:for-each select="@*">
+ <xsl:if test="local-name(.) != 'href'
+ and name(.) != 'version'
+ and name(.) != 'xml:id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </link>
+ </xsl:when>
+ <xsl:otherwise>
+ <link>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="stripNS"/>
+ </link>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="ng:tag|db:tag" mode="stripNS">
+ <sgmltag>
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')]"/>
+ <xsl:apply-templates mode="stripNS"/>
+ </sgmltag>
+</xsl:template>
+
+<xsl:template match="ng:textdata|db:textdata
+ |ng:imagedata|db:imagedata
+ |ng:videodata|db:videodata
+ |ng:audiodata|db:audiodata" mode="stripNS">
+ <xsl:element name="{local-name(.)}">
+ <xsl:copy-of select="@*[not(name(.) = 'xml:id')
+ and not(name(.) = 'version')
+ and not(name(.) = 'entityref')]"/>
+ <xsl:if test="@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@xml:id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:attribute name="fileref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="add-xml-base">
+ <xsl:if test="not(@xml:base)">
+ <xsl:variable name="base">
+ <xsl:choose>
+ <xsl:when test="function-available('saxon:systemId')">
+ <xsl:value-of select="saxon:systemId()"/>
+ </xsl:when>
+ <xsl:when test="function-available('NodeInfo:systemId')">
+ <xsl:value-of select="NodeInfo:systemId()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>WARNING: cannot add @xml:base to node </xsl:text>
+ <xsl:text>set root element. </xsl:text>
+ <xsl:text>Relative paths may not work.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- debug
+ <xsl:message>base is <xsl:value-of select="$base"/></xsl:message>
+ -->
+ <xsl:if test="$base != ''">
+ <xsl:attribute name="xml:base">
+ <xsl:call-template name="systemIdToBaseURI">
+ <xsl:with-param name="systemId">
+ <!-- file: seems to confuse some processors. -->
+ <xsl:choose>
+ <!-- however, windows paths must use file:///c:/path -->
+ <xsl:when test="starts-with($base, 'file:///') and
+ substring($base, 10, 1) = ':'">
+ <xsl:value-of select="$base"/>
+ </xsl:when>
+ <xsl:when test="starts-with($base, 'file:/')
+ and substring($base, 8, 1) = ':'">
+ <xsl:value-of select="concat('file:///',
+ substring-after($base,'file:/'))"/>
+ </xsl:when>
+ <xsl:when test="starts-with($base, 'file:///')">
+ <xsl:value-of select="substring-after($base,'file://')"/>
+ </xsl:when>
+ <xsl:when test="starts-with($base, 'file://')">
+ <xsl:value-of select="substring-after($base,'file:/')"/>
+ </xsl:when>
+ <xsl:when test="starts-with($base, 'file:/')">
+ <xsl:value-of select="substring-after($base,'file:')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="systemIdToBaseURI">
+ <xsl:param name="systemId" select="''"/>
+ <xsl:if test="contains($systemId,'/')">
+ <xsl:value-of select="substring-before($systemId,'/')"/>
+ <xsl:text>/</xsl:text>
+ <xsl:call-template name="systemIdToBaseURI">
+ <xsl:with-param name="systemId"
+ select="substring-after($systemId,'/')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="comment()|processing-instruction()|text()" mode="stripNS">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="/" priority="-1">
+ <xsl:choose>
+ <xsl:when test="(function-available('exsl:node-set') or
+ contains(system-property('xsl:vendor'),
+ 'Apache Software Foundation'))
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:message>Stripping namespace from DocBook 5 document.</xsl:message>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:message>Processing stripped document.</xsl:message>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="@* | node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/subtitles.xsl b/docs/xsl-generic/common/subtitles.xsl
new file mode 100644
index 00000000..8211c84b
--- /dev/null
+++ b/docs/xsl-generic/common/subtitles.xsl
@@ -0,0 +1,155 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: subtitles.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- subtitle markup -->
+
+<doc:mode mode="subtitle.markup" xmlns="">
+<refpurpose>Provides access to element subtitles</refpurpose>
+<refdescription id="subtitle.markup-desc">
+<para>Processing an element in the
+<literal role="mode">subtitle.markup</literal> mode produces the
+subtitle of the element.
+</para>
+</refdescription>
+</doc:mode>
+
+<xsl:template match="*" mode="subtitle.markup">
+ <xsl:message>
+ <xsl:text>Request for subtitle of unexpected element: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:message>
+ <xsl:text>???SUBTITLE???</xsl:text>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="set" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(setinfo/subtitle|info/subtitle|subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="book" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(bookinfo/subtitle|info/subtitle|subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="part" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(partinfo/subtitle
+ |docinfo/subtitle
+ |info/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(docinfo/subtitle
+ |info/subtitle
+ |prefaceinfo/subtitle
+ |chapterinfo/subtitle
+ |appendixinfo/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="article" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(artheader/subtitle
+ |articleinfo/subtitle
+ |info/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="dedication|colophon" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(subtitle|info/subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="reference" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(referenceinfo/subtitle
+ |docinfo/subtitle
+ |info/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(blockinfo/subtitle|info/subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refentry" mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(refentryinfo/subtitle
+ |info/subtitle
+ |docinfo/subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="section
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3
+ |simplesect"
+ mode="subtitle.markup">
+ <xsl:param name="allow-anchors" select="'0'"/>
+ <xsl:apply-templates select="(info/subtitle
+ |sectioninfo/subtitle
+ |sect1info/subtitle
+ |sect2info/subtitle
+ |sect3info/subtitle
+ |sect4info/subtitle
+ |sect5info/subtitle
+ |refsect1info/subtitle
+ |refsect2info/subtitle
+ |refsect3info/subtitle
+ |subtitle)[1]"
+ mode="subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/common/sv.xml b/docs/xsl-generic/common/sv.xml
new file mode 100644
index 00000000..1e7adbbe
--- /dev/null
+++ b/docs/xsl-generic/common/sv.xml
@@ -0,0 +1,658 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="sv" english-language-name="Swedish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/sv.xml -->
+<!-- * -->
+<!-- * E-mail the edited sv.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Sammanfattning"/>
+<l:gentext key="abstract" text="Sammanfattning"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="Appendix"/>
+<l:gentext key="appendix" text="appendix"/>
+<l:gentext key="Article" text="Artikel"/>
+<l:gentext key="article" text="Artikel"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Bibliografi"/>
+<l:gentext key="bibliography" text="Bibliografi"/>
+<l:gentext key="Book" text="Bok"/>
+<l:gentext key="book" text="Bok"/>
+<l:gentext key="CAUTION" text="OBSERVERA"/>
+<l:gentext key="Caution" text="Observera"/>
+<l:gentext key="caution" text="Observera"/>
+<l:gentext key="Chapter" text="Kapitel"/>
+<l:gentext key="chapter" text="kapitel"/>
+<l:gentext key="Colophon" text="Kolofon"/>
+<l:gentext key="colophon" text="kolofon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Dedikation"/>
+<l:gentext key="dedication" text="Dedikation"/>
+<l:gentext key="Edition" text="Utgåva"/>
+<l:gentext key="edition" text="Utgåva"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ekvation"/>
+<l:gentext key="equation" text="Ekvation"/>
+<l:gentext key="Example" text="Exempel"/>
+<l:gentext key="example" text="Exempel"/>
+<l:gentext key="Figure" text="Figur"/>
+<l:gentext key="figure" text="Figur"/>
+<l:gentext key="Glossary" text="Gloslista"/>
+<l:gentext key="glossary" text="Gloslista"/>
+<l:gentext key="GlossSee" text="Se"/>
+<l:gentext key="glosssee" text="Se"/>
+<l:gentext key="GlossSeeAlso" text="Se Även"/>
+<l:gentext key="glossseealso" text="Se Även"/>
+<l:gentext key="IMPORTANT" text="VIKTIGT"/>
+<l:gentext key="important" text="Viktigt"/>
+<l:gentext key="Important" text="Viktigt"/>
+<l:gentext key="Index" text="Index"/>
+<l:gentext key="index" text="Index"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Legal Notice"/>
+<l:gentext key="legalnotice" text="Legal Notice"/>
+<l:gentext key="MsgAud" text="Målgrupp"/>
+<l:gentext key="msgaud" text="Målgrupp"/>
+<l:gentext key="MsgLevel" text="Nivå"/>
+<l:gentext key="msglevel" text="Nivå"/>
+<l:gentext key="MsgOrig" text="Ursprung"/>
+<l:gentext key="msgorig" text="Ursprung"/>
+<l:gentext key="NOTE" text="NOTERA"/>
+<l:gentext key="Note" text="Notera"/>
+<l:gentext key="note" text="Notera"/>
+<l:gentext key="Part" text="Del"/>
+<l:gentext key="part" text="Del"/>
+<l:gentext key="Preface" text="Företal"/>
+<l:gentext key="preface" text="Företal"/>
+<l:gentext key="Procedure" text="Procedur"/>
+<l:gentext key="procedure" text="Procedur"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Publicerad"/>
+<l:gentext key="published" text="Publicerad"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Fråga och A"/>
+<l:gentext key="qandadiv" text="Fråga och A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Fråga:"/>
+<l:gentext key="question" text="Fråga:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referens"/>
+<l:gentext key="reference" text="Referens"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Namn"/>
+<l:gentext key="refname" text="Namn"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Synopsis"/>
+<l:gentext key="refsynopsisdiv" text="Synopsis"/>
+<l:gentext key="RevHistory" text="Revisionshistorik"/>
+<l:gentext key="revhistory" text="Revisionshistorik"/>
+<l:gentext key="revision" text="Revision"/>
+<l:gentext key="Revision" text="Revision"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="avsnitt"/>
+<l:gentext key="Section" text="Avsnitt"/>
+<l:gentext key="see" text="se"/>
+<l:gentext key="See" text="Se"/>
+<l:gentext key="seealso" text="se även"/>
+<l:gentext key="Seealso" text="Se även"/>
+<l:gentext key="SeeAlso" text="Se Även"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Set Index"/>
+<l:gentext key="SetIndex" text="Set Index"/>
+<l:gentext key="Sidebar" text="Sidebar"/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="steg"/>
+<l:gentext key="Step" text="Steg"/>
+<l:gentext key="table" text="Tabell"/>
+<l:gentext key="Table" text="Tabell"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tips"/>
+<l:gentext key="TIP" text="TIPS"/>
+<l:gentext key="Tip" text="Tips"/>
+<l:gentext key="Warning" text="Varning"/>
+<l:gentext key="warning" text="Varning"/>
+<l:gentext key="WARNING" text="VARNING"/>
+<l:gentext key="and" text="och"/>
+<l:gentext key="by" text="av"/>
+<l:gentext key="Edited" text="Redigerad"/>
+<l:gentext key="edited" text="Redigerad"/>
+<l:gentext key="Editedby" text="Redigerad av"/>
+<l:gentext key="editedby" text="Redigerad av"/>
+<l:gentext key="in" text="i"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="icke-existerande 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ållsförteckning"/>
+<l:gentext key="tableofcontents" text="Innehållsförteckning"/>
+<l:gentext key="unexpectedelementname" text="Oväntat elementnamn"/>
+<l:gentext key="unsupported" text="unsupported"/>
+<l:gentext key="xrefto" text="korsreferens till"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Ekvationsförteckning"/>
+<l:gentext key="ListofEquations" text="Ekvationsförteckning"/>
+<l:gentext key="ListofExamples" text="Exempelförteckning"/>
+<l:gentext key="listofexamples" text="Exempelförteckning"/>
+<l:gentext key="ListofFigures" text="Figurförteckning"/>
+<l:gentext key="listoffigures" text="Figurförteckning"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Tabellförteckning"/>
+<l:gentext key="ListofTables" text="Tabellförteckning"/>
+<l:gentext key="ListofUnknown" text="Förteckning av okända"/>
+<l:gentext key="listofunknown" text="Förteckning av okända"/>
+<l:gentext key="nav-home" text="Hem"/>
+<l:gentext key="nav-next" text="Nästa"/>
+<l:gentext key="nav-next-sibling" text="Snabbt framåt"/>
+<l:gentext key="nav-prev" text="Föregående"/>
+<l:gentext key="nav-prev-sibling" text="Snabbt bakåt"/>
+<l:gentext key="nav-up" text="Upp"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Utkast"/>
+<l:gentext key="above" text="ovan"/>
+<l:gentext key="below" text="nedan"/>
+<l:gentext key="sectioncalled" text="the section called"/>
+<l:gentext key="index symbols" text="Symboler"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyzåäö"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="”"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="’"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Appendix %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ekvation %n. %t"/>
+<l:template name="example" text="Exempel %n. %t"/>
+<l:template name="figure" text="Figur %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Procedur %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t" lang="en"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tabell %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Appendix %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Kapitel %n. %t"/>
+<l:template name="part" text="Del %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s" lang="en"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Fråga: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Fråga: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="”%t”"/>
+<l:template name="refsection" text="”%t”"/>
+<l:template name="refsect1" text="”%t”"/>
+<l:template name="refsect2" text="”%t”"/>
+<l:template name="refsect3" text="”%t”"/>
+<l:template name="sect1" text="”%t”"/>
+<l:template name="sect2" text="”%t”"/>
+<l:template name="sect3" text="”%t”"/>
+<l:template name="sect4" text="”%t”"/>
+<l:template name="sect5" text="”%t”"/>
+<l:template name="section" text="”%t”"/>
+<l:template name="simplesect" text="”%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="Appendix %n"/>
+<l:template name="bridgehead" text="Avsnitt %n"/>
+<l:template name="chapter" text="Kapitel %n"/>
+<l:template name="equation" text="Ekvation %n"/>
+<l:template name="example" text="Exempel %n"/>
+<l:template name="figure" text="Figur %n"/>
+<l:template name="part" text="Del %n"/>
+<l:template name="procedure" text="Procedur %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="Fråga och A %n"/>
+<l:template name="qandaentry" text="Fråga: %n"/>
+<l:template name="question" text="Fråga: %n"/>
+<l:template name="sect1" text="Avsnitt %n"/>
+<l:template name="sect2" text="Avsnitt %n"/>
+<l:template name="sect3" text="Avsnitt %n"/>
+<l:template name="sect4" text="Avsnitt %n"/>
+<l:template name="sect5" text="Avsnitt %n"/>
+<l:template name="section" text="Avsnitt %n"/>
+<l:template name="table" text="Tabell %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Appendix %n, %t"/>
+<l:template name="bridgehead" text="Avsnitt %n, ”%t”"/>
+<l:template name="chapter" text="Kapitel %n, %t"/>
+<l:template name="equation" text="Ekvation %n, ”%t”"/>
+<l:template name="example" text="Exempel %n, ”%t”"/>
+<l:template name="figure" text="Figur %n, ”%t”"/>
+<l:template name="part" text="Del %n, ”%t”"/>
+<l:template name="procedure" text="Procedur %n, ”%t”"/>
+<l:template name="productionset" text="Production %n, ”%t”"/>
+<l:template name="qandadiv" text="Fråga och A %n, ”%t”"/>
+<l:template name="refsect1" text="the section called ”%t”"/>
+<l:template name="refsect2" text="the section called ”%t”"/>
+<l:template name="refsect3" text="the section called ”%t”"/>
+<l:template name="refsection" text="the section called ”%t”"/>
+<l:template name="sect1" text="Avsnitt %n, ”%t”"/>
+<l:template name="sect2" text="Avsnitt %n, ”%t”"/>
+<l:template name="sect3" text="Avsnitt %n, ”%t”"/>
+<l:template name="sect4" text="Avsnitt %n, ”%t”"/>
+<l:template name="sect5" text="Avsnitt %n, ”%t”"/>
+<l:template name="section" text="Avsnitt %n, ”%t”"/>
+<l:template name="simplesect" text="the section called ”%t”"/>
+<l:template name="table" text="Tabell %n, ”%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" och "/>
+<l:template name="seplast" text=" och "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Se %t"/>
+<l:template name="seealso" text="Se Även %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Målgrupp: "/>
+<l:template name="MsgLevel" text="Nivå: "/>
+<l:template name="MsgOrig" text="Ursprung: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d-m-Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Januari"/>
+<l:template name="February" text="Februari"/>
+<l:template name="March" text="Mars"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="Maj"/>
+<l:template name="June" text="Juni"/>
+<l:template name="July" text="Juli"/>
+<l:template name="August" text="Augusti"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="Oktober"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="Måndag"/>
+<l:template name="Tuesday" text="Tisdag"/>
+<l:template name="Wednesday" text="Onsdag"/>
+<l:template name="Thursday" text="Torsdag"/>
+<l:template name="Friday" text="Fredag"/>
+<l:template name="Saturday" text="Lördag"/>
+<l:template name="Sunday" text="Söndag"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="Maj"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Mon"/>
+<l:template name="Tue" text="Tis"/>
+<l:template name="Wed" text="Ons"/>
+<l:template name="Thu" text="Tor"/>
+<l:template name="Fri" text="Fre"/>
+<l:template name="Sat" text="Lör"/>
+<l:template name="Sun" text="Sön"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041d Swedish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">D</l:l>
+<l:l i="4">d</l:l>
+<l:l i="5">E</l:l>
+<l:l i="5">e</l:l>
+<l:l i="6">F</l:l>
+<l:l i="6">f</l:l>
+<l:l i="7">G</l:l>
+<l:l i="7">g</l:l>
+<l:l i="8">H</l:l>
+<l:l i="8">h</l:l>
+<l:l i="9">I</l:l>
+<l:l i="9">i</l:l>
+<l:l i="10">J</l:l>
+<l:l i="10">j</l:l>
+<l:l i="11">K</l:l>
+<l:l i="11">k</l:l>
+<l:l i="12">L</l:l>
+<l:l i="12">l</l:l>
+<l:l i="13">M</l:l>
+<l:l i="13">m</l:l>
+<l:l i="14">N</l:l>
+<l:l i="14">n</l:l>
+<l:l i="15">O</l:l>
+<l:l i="15">o</l:l>
+<l:l i="16">P</l:l>
+<l:l i="16">p</l:l>
+<l:l i="17">Q</l:l>
+<l:l i="17">q</l:l>
+<l:l i="18">R</l:l>
+<l:l i="18">r</l:l>
+<l:l i="19">S</l:l>
+<l:l i="19">s</l:l>
+<l:l i="20">T</l:l>
+<l:l i="20">t</l:l>
+<l:l i="21">U</l:l>
+<l:l i="21">u</l:l>
+<l:l i="22">V</l:l>
+<l:l i="22">v</l:l>
+<l:l i="23">W</l:l>
+<l:l i="23">w</l:l>
+<l:l i="24">X</l:l>
+<l:l i="24">x</l:l>
+<l:l i="25">Y</l:l>
+<l:l i="25">y</l:l>
+<l:l i="26">Z</l:l>
+<l:l i="26">z</l:l>
+<l:l i="27">Å</l:l>
+<l:l i="27">å</l:l>
+<l:l i="28">Ä</l:l>
+<l:l i="28">ä</l:l>
+<l:l i="29">Ö</l:l>
+<l:l i="29">ö</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/ta.xml b/docs/xsl-generic/common/ta.xml
new file mode 100644
index 00000000..448136a1
--- /dev/null
+++ b/docs/xsl-generic/common/ta.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="ta" english-language-name="Tamil">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/ta.xml -->
+<!-- * -->
+<!-- * E-mail the edited ta.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="சுருக்கம்"/>
+<l:gentext key="abstract" text="சுருக்கம்"/>
+<l:gentext key="Answer" text="A:"/>
+<l:gentext key="answer" text="A:"/>
+<l:gentext key="Appendix" text="இணைப்பு"/>
+<l:gentext key="appendix" text="இணைப்பு"/>
+<l:gentext key="Article" text="கட்டுரை"/>
+<l:gentext key="article" text="கட்டுரை"/>
+<l:gentext key="Author" text="Author"/>
+<l:gentext key="Bibliography" text="விவரக்குறிப்பு"/>
+<l:gentext key="bibliography" text="விவரக்குறிப்பு"/>
+<l:gentext key="Book" text="புத்தகம்"/>
+<l:gentext key="book" text="புத்தகம்"/>
+<l:gentext key="CAUTION" text="எச்சரிக்கை"/>
+<l:gentext key="Caution" text="எச்சரிக்கை"/>
+<l:gentext key="caution" text="எச்சரிக்கை"/>
+<l:gentext key="Chapter" text="பாடம்"/>
+<l:gentext key="chapter" text="பாடம்"/>
+<l:gentext key="Colophon" text="பின்குறிப்பு"/>
+<l:gentext key="colophon" text="பின்குறிப்பு"/>
+<l:gentext key="Copyright" text="காப்புரிமை"/>
+<l:gentext key="copyright" text="காப்புரிமை"/>
+<l:gentext key="Dedication" text="சமர்பணம்"/>
+<l:gentext key="dedication" text="சமர்பணம்"/>
+<l:gentext key="Edition" text="பதிப்பு"/>
+<l:gentext key="edition" text="பதிப்பு"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="சமன்பாடு"/>
+<l:gentext key="equation" text="சமன்பாடு"/>
+<l:gentext key="Example" text="உதாரணம்"/>
+<l:gentext key="example" text="உதாரணம்"/>
+<l:gentext key="Figure" text="படம்"/>
+<l:gentext key="figure" text="படம்"/>
+<l:gentext key="Glossary" text="அகராதி"/>
+<l:gentext key="glossary" text="அகராதி"/>
+<l:gentext key="GlossSee" text="பார்"/>
+<l:gentext key="glosssee" text="பார்"/>
+<l:gentext key="GlossSeeAlso" text="இதையும்பார்க்கவும்"/>
+<l:gentext key="glossseealso" text="இதையும்பார்க்கவும்"/>
+<l:gentext key="IMPORTANT" text="முக்கியம்"/>
+<l:gentext key="important" text="முக்கியம்"/>
+<l:gentext key="Important" text="முக்கியம்"/>
+<l:gentext key="Index" text="அட்டவணை"/>
+<l:gentext key="index" text="அட்டவணை"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="சட்டஅறிக்கை"/>
+<l:gentext key="legalnotice" text="சட்டஅறிக்கை"/>
+<l:gentext key="MsgAud" text="பார்வையாளர்கள்"/>
+<l:gentext key="msgaud" text="பார்வையாளர்கள்"/>
+<l:gentext key="MsgLevel" text="மட்டம்"/>
+<l:gentext key="msglevel" text="மட்டம்"/>
+<l:gentext key="MsgOrig" text="மூலம்"/>
+<l:gentext key="msgorig" text="மூலம்"/>
+<l:gentext key="NOTE" text="குறிப்பு"/>
+<l:gentext key="Note" text="குறிப்பு"/>
+<l:gentext key="note" text="குறிப்பு"/>
+<l:gentext key="Part" text="பகுதி"/>
+<l:gentext key="part" text="பகுதி"/>
+<l:gentext key="Preface" text="முன்னுரை"/>
+<l:gentext key="preface" text="முன்னுரை"/>
+<l:gentext key="Procedure" text="முறை"/>
+<l:gentext key="procedure" text="முறை"/>
+<l:gentext key="ProductionSet" text="உற்பத்தி"/>
+<l:gentext key="PubDate" text="Publication Date"/>
+<l:gentext key="pubdate" text="Publication date"/>
+<l:gentext key="Published" text="பதிப்பிக்கப்பட்ட"/>
+<l:gentext key="published" text="பதிப்பிக்கப்பட்ட"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Q &amp; A"/>
+<l:gentext key="qandadiv" text="Q &amp; A"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Q:"/>
+<l:gentext key="question" text="Q:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="குறிப்புகள்"/>
+<l:gentext key="reference" text="குறிப்புகள்"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="பெயர்"/>
+<l:gentext key="refname" text="பெயர்"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="சுருக்கம்"/>
+<l:gentext key="refsynopsisdiv" text="சுருக்கம்"/>
+<l:gentext key="RevHistory" text="மீள்பார்வைவரலாறு"/>
+<l:gentext key="revhistory" text="மீள்பார்வைவரலாறு"/>
+<l:gentext key="revision" text="மீள்பார்வை"/>
+<l:gentext key="Revision" text="மீள்பார்வை"/>
+<l:gentext key="sect1" text="பகுதி"/>
+<l:gentext key="sect2" text="பகுதி"/>
+<l:gentext key="sect3" text="பகுதி"/>
+<l:gentext key="sect4" text="பகுதி"/>
+<l:gentext key="sect5" text="பகுதி"/>
+<l:gentext key="section" text="பகுதி"/>
+<l:gentext key="Section" text="பகுதி"/>
+<l:gentext key="see" text="பார்"/>
+<l:gentext key="See" text="பார்"/>
+<l:gentext key="seealso" text="இதையும்பார்"/>
+<l:gentext key="Seealso" text="இதையும்பார்க்கவும்"/>
+<l:gentext key="SeeAlso" text="இதையும்பார்க்கவும்"/>
+<l:gentext key="set" text="அமை"/>
+<l:gentext key="Set" text="அமை"/>
+<l:gentext key="setindex" text="அட்டவணைஅமை"/>
+<l:gentext key="SetIndex" text="அட்டவணைஅமை"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="பக்கபட்டி"/>
+<l:gentext key="step" text="படிமுறை"/>
+<l:gentext key="Step" text="படிகள்"/>
+<l:gentext key="table" text="அட்டவணை"/>
+<l:gentext key="Table" text="அட்டவணை"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="குறிப்பு"/>
+<l:gentext key="TIP" text="குறிப்பு"/>
+<l:gentext key="Tip" text="குறிப்பு"/>
+<l:gentext key="Warning" text="எச்சரிக்கை"/>
+<l:gentext key="warning" text="எச்சரிக்கை"/>
+<l:gentext key="WARNING" text="எச்சரிக்கை"/>
+<l:gentext key="and" text="மற்றும்"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="திருத்தப்பட்ட"/>
+<l:gentext key="edited" text="திருத்தப்பட்ட"/>
+<l:gentext key="Editedby" text="திருத்தியவர்"/>
+<l:gentext key="editedby" text="திருத்தியவர்"/>
+<l:gentext key="in" text="இல்"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="இல்லாதஉறுப்பு"/>
+<l:gentext key="notes" text="குறிப்புகள்"/>
+<l:gentext key="Notes" text="குறிப்புகள்"/>
+<l:gentext key="Pgs" text="Pgs."/>
+<l:gentext key="pgs" text="Pgs."/>
+<l:gentext key="Revisedby" text="மீண்டும்பார்த்தவர்:"/>
+<l:gentext key="revisedby" text="மீண்டும்பார்த்தவர்:"/>
+<l:gentext key="TableNotes" text="குறிப்புகள்"/>
+<l:gentext key="tablenotes" text="குறிப்புகள்"/>
+<l:gentext key="TableofContents" text="உள்ளடக்கங்கள்"/>
+<l:gentext key="tableofcontents" text="உள்ளடக்கங்கள்"/>
+<l:gentext key="unexpectedelementname" text="எதிர்பாராதஉறுப்புபெயர்"/>
+<l:gentext key="unsupported" text="ஆதரவற்ற"/>
+<l:gentext key="xrefto" text="xrefto"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="சமன்பாடுகளின்பட்டியல்"/>
+<l:gentext key="ListofEquations" text="சமன்பாடுகளின்பட்டியல்"/>
+<l:gentext key="ListofExamples" text="உதாரணங்களின்பட்டியல்"/>
+<l:gentext key="listofexamples" text="உதாரணங்களின்பட்டியல்"/>
+<l:gentext key="ListofFigures" text="படங்களின்பட்டியல்"/>
+<l:gentext key="listoffigures" text="படங்களின்பட்டியல்"/>
+<l:gentext key="ListofProcedures" text="செய்முறைகளின்பட்டியல்"/>
+<l:gentext key="listofprocedures" text="செய்முறைகளின்பட்டியல்"/>
+<l:gentext key="listoftables" text="அட்டவணைகளின்பட்டியல்"/>
+<l:gentext key="ListofTables" text="அட்டவணைகளின்பட்டியல்"/>
+<l:gentext key="ListofUnknown" text="தெரியாதபட்டியல்"/>
+<l:gentext key="listofunknown" text="தெரியாதபட்டியல்"/>
+<l:gentext key="nav-home" text="இல்லம்"/>
+<l:gentext key="nav-next" text="அடுத்து"/>
+<l:gentext key="nav-next-sibling" text="வேகமாகமுன்செல்"/>
+<l:gentext key="nav-prev" text="முன்"/>
+<l:gentext key="nav-prev-sibling" text="வேகமாகபின்செல்"/>
+<l:gentext key="nav-up" text="மேல்"/>
+<l:gentext key="nav-toc" text="ToC"/>
+<l:gentext key="Draft" text="ஆவணம்"/>
+<l:gentext key="above" text="மேல்"/>
+<l:gentext key="below" text="கீழ்"/>
+<l:gentext key="sectioncalled" text="அழைக்கபட்டபகுதி"/>
+<l:gentext key="index symbols" text="Symbols"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="இணைப்பு %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="பாடம் %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="சமன்பாடு %n. %t"/>
+<l:template name="example" text="உதாரணம் %n. %t"/>
+<l:template name="figure" text="படம் %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="பகுதி %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="முறை %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="உற்பத்தி %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="அட்டவணை %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="இணைப்பு %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="பாடம் %n. %t"/>
+<l:template name="part" text="பகுதி %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o"/>
+<l:template name="olink.page.citation" text=" (page %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)"/>
+<l:template name="docname" text=" in %o"/>
+<l:template name="docnamelong" text=" in the document titled %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Page %p"/>
+<l:template name="bridgehead" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="refsection" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="refsect1" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="refsect2" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="refsect3" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="sect1" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="sect2" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="sect3" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="sect4" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="sect5" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="section" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="simplesect" text="அழைக்கபட்டபகுதி “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="A: %n"/>
+<l:template name="appendix" text="இணைப்பு %n"/>
+<l:template name="bridgehead" text="பகுதி %n"/>
+<l:template name="chapter" text="பாடம் %n"/>
+<l:template name="equation" text="சமன்பாடு %n"/>
+<l:template name="example" text="உதாரணம் %n"/>
+<l:template name="figure" text="படம் %n"/>
+<l:template name="part" text="பகுதி %n"/>
+<l:template name="procedure" text="முறை %n"/>
+<l:template name="productionset" text="உற்பத்தி %n"/>
+<l:template name="qandadiv" text="Q &amp; A %n"/>
+<l:template name="qandaentry" text="Q: %n"/>
+<l:template name="question" text="Q: %n"/>
+<l:template name="sect1" text="பகுதி %n"/>
+<l:template name="sect2" text="பகுதி %n"/>
+<l:template name="sect3" text="பகுதி %n"/>
+<l:template name="sect4" text="பகுதி %n"/>
+<l:template name="sect5" text="பகுதி %n"/>
+<l:template name="section" text="பகுதி %n"/>
+<l:template name="table" text="அட்டவணை %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="இணைப்பு %n, %t"/>
+<l:template name="bridgehead" text="பகுதி %n, “%t”"/>
+<l:template name="chapter" text="பாடம் %n, %t"/>
+<l:template name="equation" text="சமன்பாடு %n, “%t”"/>
+<l:template name="example" text="உதாரணம் %n, “%t”"/>
+<l:template name="figure" text="படம் %n, “%t”"/>
+<l:template name="part" text="பகுதி %n, “%t”"/>
+<l:template name="procedure" text="முறை %n, “%t”"/>
+<l:template name="productionset" text="உற்பத்தி %n, “%t”"/>
+<l:template name="qandadiv" text="Q &amp; A %n, “%t”"/>
+<l:template name="refsect1" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="refsect2" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="refsect3" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="refsection" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="sect1" text="பகுதி %n, “%t”"/>
+<l:template name="sect2" text="பகுதி %n, “%t”"/>
+<l:template name="sect3" text="பகுதி %n, “%t”"/>
+<l:template name="sect4" text="பகுதி %n, “%t”"/>
+<l:template name="sect5" text="பகுதி %n, “%t”"/>
+<l:template name="section" text="பகுதி %n, “%t”"/>
+<l:template name="simplesect" text="அழைக்கபட்டபகுதி “%t”"/>
+<l:template name="table" text="அட்டவணை %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" மற்றும் "/>
+<l:template name="seplast" text=", மற்றும் "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="பார் %t"/>
+<l:template name="seealso" text="இதையும்பார்க்கவும் %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="பார்வையாளர்கள்: "/>
+<l:template name="MsgLevel" text="மட்டம்: "/>
+<l:template name="MsgOrig" text="மூலம்: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January"/>
+<l:template name="February" text="February"/>
+<l:template name="March" text="March"/>
+<l:template name="April" text="April"/>
+<l:template name="May" text="May"/>
+<l:template name="June" text="June"/>
+<l:template name="July" text="July"/>
+<l:template name="August" text="August"/>
+<l:template name="September" text="September"/>
+<l:template name="October" text="October"/>
+<l:template name="November" text="November"/>
+<l:template name="December" text="December"/>
+<l:template name="Monday" text="Monday"/>
+<l:template name="Tuesday" text="Tuesday"/>
+<l:template name="Wednesday" text="Wednesday"/>
+<l:template name="Thursday" text="Thursday"/>
+<l:template name="Friday" text="Friday"/>
+<l:template name="Saturday" text="Saturday"/>
+<l:template name="Sunday" text="Sunday"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan"/>
+<l:template name="Feb" text="Feb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Apr"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Jun"/>
+<l:template name="Jul" text="Jul"/>
+<l:template name="Aug" text="Aug"/>
+<l:template name="Sep" text="Sep"/>
+<l:template name="Oct" text="Oct"/>
+<l:template name="Nov" text="Nov"/>
+<l:template name="Dec" text="Dec"/>
+<l:template name="Mon" text="Mon"/>
+<l:template name="Tue" text="Tue"/>
+<l:template name="Wed" text="Wed"/>
+<l:template name="Thu" text="Thu"/>
+<l:template name="Fri" text="Fri"/>
+<l:template name="Sat" text="Sat"/>
+<l:template name="Sun" text="Sun"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0049 Tamil"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/table.xsl b/docs/xsl-generic/common/table.xsl
new file mode 100644
index 00000000..72d50d38
--- /dev/null
+++ b/docs/xsl-generic/common/table.xsl
@@ -0,0 +1,514 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: table.xsl 7056 2007-07-17 13:56:09Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="blank.spans">
+ <xsl:param name="cols" select="1"/>
+ <xsl:if test="$cols &gt; 0">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="$cols - 1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="calculate.following.spans">
+ <xsl:param name="colspan" select="1"/>
+ <xsl:param name="spans" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="$colspan &gt; 0">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$colspan - 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$spans"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="finaltd">
+ <xsl:param name="spans"/>
+ <xsl:param name="col" select="0"/>
+
+ <xsl:if test="$spans != ''">
+ <xsl:choose>
+ <xsl:when test="starts-with($spans,'0:')">
+ <xsl:call-template name="empty.table.cell">
+ <xsl:with-param name="colnum" select="$col"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="finaltd">
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ <xsl:with-param name="col" select="$col+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="sfinaltd">
+ <xsl:param name="spans"/>
+
+ <xsl:if test="$spans != ''">
+ <xsl:choose>
+ <xsl:when test="starts-with($spans,'0:')">0:</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before($spans,':')-1"/>
+ <xsl:text>:</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="sfinaltd">
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="entry.colnum">
+ <xsl:param name="entry" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$entry/@spanname">
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
+ <xsl:variable name="spanspec"
+ select="($entry/ancestor::tgroup/spanspec[@spanname=$spanname]
+ |$entry/ancestor::entrytbl/spanspec[@spanname=$spanname])[last()]"/>
+ <xsl:variable name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$spanspec/@namest]
+ |$entry/ancestor::entrytbl/colspec[@colname=$spanspec/@namest])[last()]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry/@colname">
+ <xsl:variable name="colname" select="$entry/@colname"/>
+ <xsl:variable name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$colname]
+ |$entry/ancestor::entrytbl/colspec[@colname=$colname])[last()]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry/@namest">
+ <xsl:variable name="namest" select="$entry/@namest"/>
+ <xsl:variable name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$namest]
+ |$entry/ancestor::entrytbl/colspec[@colname=$namest])[last()]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- no idea, return 0 -->
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<doc:template name="entry.colnum" xmlns="">
+<refpurpose>Determine the column number in which a given entry occurs</refpurpose>
+<refdescription id="entry.colnum-desc">
+<para>If an <tag>entry</tag> has a
+<tag class="attribute">colname</tag> or
+<tag class="attribute">namest</tag> attribute, this template
+will determine the number of the column in which the entry should occur.
+For other <tag>entry</tag>s, nothing is returned.</para>
+</refdescription>
+<refparameter id="entry.colnum-params">
+<variablelist>
+<varlistentry><term>entry</term>
+<listitem>
+<para>The <tag>entry</tag>-element which is to be tested.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparameter>
+
+<refreturn id="entry.colnum-returns">
+<para>This template returns the column number if it can be determined,
+or 0 (the empty string)</para>
+</refreturn>
+</doc:template>
+
+<xsl:template name="colspec.colnum">
+ <xsl:param name="colspec" select="."/>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:when test="$colspec/preceding-sibling::colspec">
+ <xsl:variable name="prec.colspec.colnum">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec"
+ select="$colspec/preceding-sibling::colspec[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prec.colspec.colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calculate.colspan">
+ <xsl:param name="entry" select="."/>
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
+ <xsl:variable name="spanspec"
+ select="($entry/ancestor::tgroup/spanspec[@spanname=$spanname]
+ |$entry/ancestor::entrytbl/spanspec[@spanname=$spanname])[last()]"/>
+
+ <xsl:variable name="namest">
+ <xsl:choose>
+ <xsl:when test="@spanname">
+ <xsl:value-of select="$spanspec/@namest"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$entry/@namest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="nameend">
+ <xsl:choose>
+ <xsl:when test="@spanname">
+ <xsl:value-of select="$spanspec/@nameend"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$entry/@nameend"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scol">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$namest]
+ |$entry/ancestor::entrytbl/colspec[@colname=$namest])[last()]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="ecol">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspec"
+ select="($entry/ancestor::tgroup/colspec[@colname=$nameend]
+ |$entry/ancestor::entrytbl/colspec[@colname=$nameend])[last()]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$namest != '' and $nameend != ''">
+ <xsl:choose>
+ <xsl:when test="number($ecol) &gt;= number($scol)">
+ <xsl:value-of select="number($ecol) - number($scol) + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="number($scol) - number($ecol) + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calculate.rowsep">
+ <xsl:param name="entry" select="."/>
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="$entry"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="calculate.colsep">
+ <xsl:param name="entry" select="."/>
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="$entry"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="inherited.table.attribute">
+ <xsl:param name="entry" select="."/>
+ <xsl:param name="row" select="$entry/ancestor-or-self::row[1]"/>
+ <xsl:param name="colnum" select="0"/>
+ <xsl:param name="attribute" select="'colsep'"/>
+
+ <xsl:variable name="tgroup" select="$row/parent::*/parent::tgroup[1]"/>
+ <xsl:variable name="tbody" select="$row/parent::*[1]"/>
+
+ <xsl:variable name="table" select="($tgroup/ancestor::table
+ |$tgroup/ancestor::informaltable
+ |$entry/ancestor::entrytbl)[last()]"/>
+
+ <xsl:variable name="entry.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$entry"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="row.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$row"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="span.value">
+ <xsl:if test="$entry/@spanname">
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
+ <xsl:variable name="spanspec"
+ select="$tgroup/spanspec[@spanname=$spanname]"/>
+ <xsl:variable name="span.colspec"
+ select="$tgroup/colspec[@colname=$spanspec/@namest]"/>
+
+ <xsl:variable name="spanspec.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$spanspec"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="scolspec.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$span.colspec"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spanspec.value != ''">
+ <xsl:value-of select="$spanspec.value"/>
+ </xsl:when>
+ <xsl:when test="$scolspec.value != ''">
+ <xsl:value-of select="$scolspec.value"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="namest.value">
+ <xsl:if test="$entry/@namest">
+ <xsl:variable name="namest" select="$entry/@namest"/>
+ <xsl:variable name="colspec"
+ select="$tgroup/colspec[@colname=$namest]"/>
+
+ <xsl:variable name="inner.namest.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$colspec"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$inner.namest.value">
+ <xsl:value-of select="$inner.namest.value"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="tgroup.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$tgroup"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="tbody.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$tbody"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="table.value">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$table"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="default.value">
+ <!-- This section used to say that rowsep and colsep have defaults based -->
+ <!-- on the frame setting. Further reflection and closer examination of the -->
+ <!-- CALS spec reveals I was mistaken. The default is "1" for rowsep and colsep. -->
+ <!-- For everything else, the default is the tgroup value -->
+ <xsl:choose>
+ <xsl:when test="$tgroup.value != ''">
+ <xsl:value-of select="$tgroup.value"/>
+ </xsl:when>
+ <xsl:when test="$attribute = 'rowsep'">1</xsl:when>
+ <xsl:when test="$attribute = 'colsep'">1</xsl:when>
+ <xsl:otherwise><!-- empty --></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="calc.colvalue">
+ <xsl:if test="$colnum &gt; 0">
+ <xsl:call-template name="colnum.colspec">
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$entry.value != ''">
+ <xsl:value-of select="$entry.value"/>
+ </xsl:when>
+ <xsl:when test="$row.value != ''">
+ <xsl:value-of select="$row.value"/>
+ </xsl:when>
+ <xsl:when test="$span.value != ''">
+ <xsl:value-of select="$span.value"/>
+ </xsl:when>
+ <xsl:when test="$namest.value != ''">
+ <xsl:value-of select="$namest.value"/>
+ </xsl:when>
+ <xsl:when test="$calc.colvalue != ''">
+ <xsl:value-of select="$calc.colvalue"/>
+ </xsl:when>
+ <xsl:when test="$tbody.value != ''">
+ <xsl:value-of select="$tbody.value"/>
+ </xsl:when>
+ <xsl:when test="$tgroup.value != ''">
+ <xsl:value-of select="$tgroup.value"/>
+ </xsl:when>
+ <xsl:when test="$table.value != ''">
+ <xsl:value-of select="$table.value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="colnum.colspec">
+ <xsl:param name="colnum" select="0"/>
+ <xsl:param name="attribute" select="'colname'"/>
+ <xsl:param name="colspec.ancestor"
+ select="(ancestor::tgroup|ancestor::entrytbl)
+ [position() = last()]"/>
+ <xsl:param name="colspecs" select="$colspec.ancestor/colspec"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="not($colspecs) or $count &gt; $colnum">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:when test="$colspecs[1]/@colnum">
+ <xsl:choose>
+ <xsl:when test="$colspecs[1]/@colnum = $colnum">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$colspecs[1]"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colnum.colspec">
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ <xsl:with-param name="colspecs"
+ select="$colspecs[position()&gt;1]"/>
+ <xsl:with-param name="count"
+ select="$colspecs[1]/@colnum+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$count = $colnum">
+ <xsl:call-template name="get-attribute">
+ <xsl:with-param name="element" select="$colspecs[1]"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colnum.colspec">
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ <xsl:with-param name="colspecs"
+ select="$colspecs[position()&gt;1]"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="get-attribute">
+ <xsl:param name="element" select="."/>
+ <xsl:param name="attribute" select="''"/>
+
+ <xsl:for-each select="$element/@*">
+ <xsl:if test="local-name(.) = $attribute">
+ <xsl:value-of select="."/>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="consume-row">
+ <xsl:param name="spans"/>
+
+ <xsl:if test="contains($spans,':')">
+ <xsl:value-of select="substring-before($spans,':') - 1"/>
+ <xsl:text>:</xsl:text>
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- Returns the table style for the context element -->
+<xsl:template name="tabstyle">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="tgroup" select="$node/tgroup[1] |
+ $node/ancestor-or-self::tgroup[1]"/>
+
+ <xsl:variable name="table"
+ select="($node/ancestor-or-self::table |
+ $node/ancestor-or-self::informaltable)[1]"/>
+
+ <xsl:variable name="tabstyle">
+ <xsl:choose>
+ <xsl:when test="$table/@tabstyle != ''">
+ <xsl:value-of select="normalize-space($table/@tabstyle)"/>
+ </xsl:when>
+ <xsl:when test="$tgroup/@tgroupstyle != ''">
+ <xsl:value-of select="normalize-space($tgroup/@tgroupstyle)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$tabstyle"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/targetdatabase.dtd b/docs/xsl-generic/common/targetdatabase.dtd
new file mode 100644
index 00000000..2ace1e00
--- /dev/null
+++ b/docs/xsl-generic/common/targetdatabase.dtd
@@ -0,0 +1,49 @@
+<!-- targetdatabase.dtd -->
+<!-- A DTD for managing cross reference target information -->
+
+<!ELEMENT targetset (targetsetinfo?, sitemap*, document*) >
+
+<!ELEMENT targetsetinfo ANY >
+
+<!ELEMENT sitemap (dir) >
+
+<!ELEMENT dir ((dir|document)*) >
+<!ATTLIST dir
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT document (div*) >
+<!ATTLIST document
+ targetdoc CDATA #REQUIRED
+ uri CDATA #IMPLIED
+ baseuri CDATA #IMPLIED
+ href CDATA #IMPLIED
+ dir CDATA #IMPLIED
+>
+
+<!ELEMENT div (ttl?, objttl?, xreftext?, (div|obj)*)>
+<!ATTLIST div
+ targetptr CDATA #IMPLIED
+ element CDATA #IMPLIED
+ name CDATA #IMPLIED
+ number CDATA #IMPLIED
+ href CDATA #IMPLIED
+ lang CDATA #IMPLIED
+ page CDATA #IMPLIED
+>
+
+
+<!ELEMENT ttl ANY >
+<!ELEMENT objttl ANY >
+<!ELEMENT xreftext ANY >
+
+<!ELEMENT obj (ttl?, objttl?, xreftext?)>
+<!ATTLIST obj
+ targetptr CDATA #IMPLIED
+ element CDATA #IMPLIED
+ name CDATA #IMPLIED
+ number CDATA #IMPLIED
+ href CDATA #IMPLIED
+ lang CDATA #IMPLIED
+ page CDATA #IMPLIED
+>
diff --git a/docs/xsl-generic/common/targets.xsl b/docs/xsl-generic/common/targets.xsl
new file mode 100644
index 00000000..8098d9ba
--- /dev/null
+++ b/docs/xsl-generic/common/targets.xsl
@@ -0,0 +1,272 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: targets.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- cross reference target collection -->
+
+<doc:mode mode="collect.targets" xmlns="">
+<refpurpose>Collects information for potential cross reference targets</refpurpose>
+<refdescription id="collect.targets-desc">
+<para>Processing the root element in the
+<literal role="mode">collect.targets</literal> mode produces
+a set of target database elements that can be used by
+the olink mechanism to resolve external cross references.
+The collection process is controlled by the <literal>
+collect.xref.targets</literal> parameter, which can be
+<literal>yes</literal> to collect targets and process
+the document for output, <literal>only</literal> to
+only collect the targets, and <literal>no</literal>
+(default) to not collect the targets and only process the document.
+</para>
+<para>
+A <literal>targets.filename</literal> parameter must be
+specified to receive the output if
+<literal>collect.xref.targets</literal> is
+set to <literal>yes</literal> so as to
+redirect the target data to a file separate from the
+document output.
+</para>
+</refdescription>
+</doc:mode>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="collect.targets">
+ <xsl:choose>
+ <xsl:when test="$collect.xref.targets = 'yes' and $targets.filename = ''">
+ <xsl:message>
+ Must specify a $targets.filename parameter when
+ $collect.xref.targets is set to 'yes'.
+ The xref targets were not collected.
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$targets.filename">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$targets.filename"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="''"/>
+ <xsl:with-param name="doctype-system" select="''"/>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="quiet" select="0"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="." mode="olink.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Else write to standard output -->
+ <xsl:apply-templates select="." mode="olink.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="olink.href.target">
+ <xsl:param name="nd" select="."/>
+
+ <xsl:value-of select="$olink.base.uri"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$nd"/>
+ <xsl:with-param name="context" select="NOTANODE"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Templates for extracting cross reference information
+ from a document for use in an xref database.
+-->
+
+<xsl:template name="attrs">
+ <xsl:param name="nd" select="."/>
+
+ <xsl:attribute name="element">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="olink.href.target">
+ <xsl:with-param name="nd" select="$nd"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:variable name="num">
+ <xsl:apply-templates select="$nd" mode="label.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:if test="$num">
+ <xsl:attribute name="number">
+ <xsl:value-of select="$num"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$nd/@id">
+ <xsl:attribute name="targetptr">
+ <xsl:value-of select="$nd/@id"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$nd/@xml:id">
+ <xsl:attribute name="targetptr">
+ <xsl:value-of select="$nd/@xml:id"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$nd/@lang">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="$nd/@lang"/>
+ </xsl:attribute>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template name="div">
+ <xsl:param name="nd" select="."/>
+
+ <div>
+ <xsl:call-template name="attrs">
+ <xsl:with-param name="nd" select="$nd"/>
+ </xsl:call-template>
+ <ttl>
+ <xsl:apply-templates select="$nd" mode="title.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </ttl>
+ <xreftext>
+ <xsl:choose>
+ <xsl:when test="$nd/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$nd"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$nd" mode="xref-to">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xreftext>
+ <xsl:apply-templates mode="olink.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="obj">
+ <xsl:param name="nd" select="."/>
+
+ <obj>
+ <xsl:call-template name="attrs">
+ <xsl:with-param name="nd" select="$nd"/>
+ </xsl:call-template>
+ <ttl>
+ <xsl:apply-templates select="$nd" mode="title.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </ttl>
+ <xreftext>
+ <xsl:choose>
+ <xsl:when test="$nd/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$nd"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$nd" mode="xref-to">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xreftext>
+ </obj>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()"
+ mode="olink.mode">
+ <!-- nop -->
+</xsl:template>
+
+<!--
+<xsl:template match="*" mode="olink.mode">
+</xsl:template>
+-->
+
+<xsl:template match="set" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="book" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="article" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="bibliography|bibliodiv" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="olink.mode">
+ <xsl:call-template name="obj"/>
+</xsl:template>
+
+<xsl:template match="refentry" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="refsection|refsect1|refsect2|refsect3" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table" mode="olink.mode">
+ <xsl:call-template name="obj"/>
+ <xsl:apply-templates mode="olink.mode"/>
+</xsl:template>
+
+<xsl:template match="equation[title or info/title]" mode="olink.mode">
+ <xsl:call-template name="obj"/>
+</xsl:template>
+
+<xsl:template match="qandaset|qandaentry" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="*" mode="olink.mode">
+ <xsl:if test="@id or @xml:id">
+ <xsl:call-template name="obj"/>
+ </xsl:if>
+ <xsl:apply-templates mode="olink.mode"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/th.xml b/docs/xsl-generic/common/th.xml
new file mode 100644
index 00000000..9728900a
--- /dev/null
+++ b/docs/xsl-generic/common/th.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="th" english-language-name="Thai">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/th.xml -->
+<!-- * -->
+<!-- * E-mail the edited th.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="บทคัดย่อ"/>
+<l:gentext key="abstract" text="บทคัดย่อ"/>
+<l:gentext key="Answer" text="ตอบ:"/>
+<l:gentext key="answer" text="ตอบ:"/>
+<l:gentext key="Appendix" text="ภาคผนวก"/>
+<l:gentext key="appendix" text="ภาคผนวก"/>
+<l:gentext key="Article" text="บทความ"/>
+<l:gentext key="article" text="บทความ"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="บรรณานุกรม"/>
+<l:gentext key="bibliography" text="บรรณานุกรม"/>
+<l:gentext key="Book" text="หนังสือ"/>
+<l:gentext key="book" text="หนังสือ"/>
+<l:gentext key="CAUTION" text="คำเตือน"/>
+<l:gentext key="Caution" text="คำเตือน"/>
+<l:gentext key="caution" text="คำเตือน"/>
+<l:gentext key="Chapter" text="บทที่"/>
+<l:gentext key="chapter" text="บทที่"/>
+<l:gentext key="Colophon" text="เบื้องหลัง"/>
+<l:gentext key="colophon" text="เบื้องหลัง"/>
+<l:gentext key="Copyright" text="สงวนสิขสิทธิ์"/>
+<l:gentext key="copyright" text="สงวนสิขสิทธิ์"/>
+<l:gentext key="Dedication" text="คำอุทิศ"/>
+<l:gentext key="dedication" text="คำอุทิศ"/>
+<l:gentext key="Edition" text="ฉบับ"/>
+<l:gentext key="edition" text="ฉบับ"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="สมการ"/>
+<l:gentext key="equation" text="สมการ"/>
+<l:gentext key="Example" text="ตัวอย่าง"/>
+<l:gentext key="example" text="ตัวอย่าง"/>
+<l:gentext key="Figure" text="รูป"/>
+<l:gentext key="figure" text="รูป"/>
+<l:gentext key="Glossary" text="อภิธานศัพท์"/>
+<l:gentext key="glossary" text="อภิธานศัพท์"/>
+<l:gentext key="GlossSee" text="ดู"/>
+<l:gentext key="glosssee" text="ดู"/>
+<l:gentext key="GlossSeeAlso" text="ดูเพิ่มเติม"/>
+<l:gentext key="glossseealso" text="ดูเพิ่มเติม"/>
+<l:gentext key="IMPORTANT" text="ข้อควรจำ"/>
+<l:gentext key="important" text="ข้อควรจำ"/>
+<l:gentext key="Important" text="ข้อควรจำ"/>
+<l:gentext key="Index" text="ดรรชนี"/>
+<l:gentext key="index" text="ดรรชนี"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="ข้อผูกพันตามกฎหมาย"/>
+<l:gentext key="legalnotice" text="ข้อผูกพันตามกฎหมาย"/>
+<l:gentext key="MsgAud" text="ผู้อ่าน"/>
+<l:gentext key="msgaud" text="ผู้อ่าน"/>
+<l:gentext key="MsgLevel" text="ระดับ"/>
+<l:gentext key="msglevel" text="ระดับ"/>
+<l:gentext key="MsgOrig" text="ที่มา"/>
+<l:gentext key="msgorig" text="ที่มา"/>
+<l:gentext key="NOTE" text="หมายเหตุ"/>
+<l:gentext key="Note" text="หมายเหตุ"/>
+<l:gentext key="note" text="หมายเหตุ"/>
+<l:gentext key="Part" text="ภาค"/>
+<l:gentext key="part" text="ภาค"/>
+<l:gentext key="Preface" text="คำนำ"/>
+<l:gentext key="preface" text="คำนำ"/>
+<l:gentext key="Procedure" text="ระเบียบการ"/>
+<l:gentext key="procedure" text="ระเบียบการ"/>
+<l:gentext key="ProductionSet" text="ผลิต"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="ตีพิมพ์"/>
+<l:gentext key="published" text="ตีพิมพ์"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="ถาม-ตอบ"/>
+<l:gentext key="qandadiv" text="ถาม-ตอบ"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="ถาม:"/>
+<l:gentext key="question" text="ถาม:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="หนังสืออ้างอิง"/>
+<l:gentext key="reference" text="หนังสืออ้างอิง"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="ชื่อ"/>
+<l:gentext key="refname" text="ชื่อ"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="สาระสำคัญ"/>
+<l:gentext key="refsynopsisdiv" text="สาระสำคัญ"/>
+<l:gentext key="RevHistory" text="บันทึกรุ่น"/>
+<l:gentext key="revhistory" text="บันทึกรุ่น"/>
+<l:gentext key="revision" text="รุ่นที่"/>
+<l:gentext key="Revision" text="รุ่นที่"/>
+<l:gentext key="sect1" text="ตอนที่"/>
+<l:gentext key="sect2" text="ตอนที่"/>
+<l:gentext key="sect3" text="ตอนที่"/>
+<l:gentext key="sect4" text="ตอนที่"/>
+<l:gentext key="sect5" text="ตอนที่"/>
+<l:gentext key="section" text="ตอนที่"/>
+<l:gentext key="Section" text="ตอนที่"/>
+<l:gentext key="see" text="ดู"/>
+<l:gentext key="See" text="ดู"/>
+<l:gentext key="seealso" text="ดูเพิ่มเติม"/>
+<l:gentext key="Seealso" text="ดูเพิ่มเติม"/>
+<l:gentext key="SeeAlso" text="ดูเพิ่มเติม"/>
+<l:gentext key="set" text="ชุด"/>
+<l:gentext key="Set" text="ชุด"/>
+<l:gentext key="setindex" text="สารบัญชุด"/>
+<l:gentext key="SetIndex" text="สารบัญชุด"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="ลำดับ"/>
+<l:gentext key="Step" text="ลำดับ"/>
+<l:gentext key="table" text="ตาราง"/>
+<l:gentext key="Table" text="ตาราง"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="คำแนะนำ"/>
+<l:gentext key="TIP" text="คำแนะนำ"/>
+<l:gentext key="Tip" text="คำแนะนำ"/>
+<l:gentext key="Warning" text="คำเตือน"/>
+<l:gentext key="warning" text="คำเตือน"/>
+<l:gentext key="WARNING" text="คำเตือน"/>
+<l:gentext key="and" text="และ"/>
+<l:gentext key="by" text="โดย"/>
+<l:gentext key="Edited" text="เรียบเรียง"/>
+<l:gentext key="edited" text="เรียบเรียง"/>
+<l:gentext key="Editedby" text="เรียบเรียงโดย"/>
+<l:gentext key="editedby" text="เรียบเรียงโดย"/>
+<l:gentext key="in" text="ใน"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="ไม่พบส่วนที่ต้องการ"/>
+<l:gentext key="notes" text="หมายเหตุ"/>
+<l:gentext key="Notes" text="หมายเหตุ"/>
+<l:gentext key="Pgs" text="หน้า"/>
+<l:gentext key="pgs" text="หน้า"/>
+<l:gentext key="Revisedby" text="แก้ไขปรับปรุงโดย: "/>
+<l:gentext key="revisedby" text="แก้ไขปรับปรุงโดย: "/>
+<l:gentext key="TableNotes" text="หมายเหตุ"/>
+<l:gentext key="tablenotes" text="หมายเหตุ"/>
+<l:gentext key="TableofContents" text="สารบัญ"/>
+<l:gentext key="tableofcontents" text="สารบัญ"/>
+<l:gentext key="unexpectedelementname" text="พบส่วนที่ไม่ต้องการ"/>
+<l:gentext key="unsupported" text="ไม่สนับสนุน"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="สารบัญสมการ"/>
+<l:gentext key="ListofEquations" text="สารบัญสมการ"/>
+<l:gentext key="ListofExamples" text="สารบัญตัวอย่าง"/>
+<l:gentext key="listofexamples" text="สารบัญตัวอย่าง"/>
+<l:gentext key="ListofFigures" text="สารบัญรูป"/>
+<l:gentext key="listoffigures" text="สารบัญรูป"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="สารบัญตาราง"/>
+<l:gentext key="ListofTables" text="สารบัญตาราง"/>
+<l:gentext key="ListofUnknown" text="สารบัญอื่น ๆ"/>
+<l:gentext key="listofunknown" text="สารบัญอื่น ๆ"/>
+<l:gentext key="nav-home" text="หน้าแรก"/>
+<l:gentext key="nav-next" text="ต่อไป"/>
+<l:gentext key="nav-next-sibling" text="ต่อไป"/>
+<l:gentext key="nav-prev" text="ก่อนหน้า"/>
+<l:gentext key="nav-prev-sibling" text="ก่อนหน้า"/>
+<l:gentext key="nav-up" text="กลับ"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="หัวข้อ"/>
+<l:gentext key="index symbols" text="สัญลักษณ์"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="ภาคผนวก %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="บทที่ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="สมการ %n. %t"/>
+<l:template name="example" text="ตัวอย่าง %n. %t"/>
+<l:template name="figure" text="รูป %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="ภาค %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="ระเบียบการ %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="ผลิต %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="ตาราง %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="ภาคผนวก %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="บทที่ %n. %t"/>
+<l:template name="part" text="ภาค %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="ถาม: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="ถาม: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="หัวข้อ “%t”"/>
+<l:template name="refsection" text="หัวข้อ “%t”"/>
+<l:template name="refsect1" text="หัวข้อ “%t”"/>
+<l:template name="refsect2" text="หัวข้อ “%t”"/>
+<l:template name="refsect3" text="หัวข้อ “%t”"/>
+<l:template name="sect1" text="หัวข้อ “%t”"/>
+<l:template name="sect2" text="หัวข้อ “%t”"/>
+<l:template name="sect3" text="หัวข้อ “%t”"/>
+<l:template name="sect4" text="หัวข้อ “%t”"/>
+<l:template name="sect5" text="หัวข้อ “%t”"/>
+<l:template name="section" text="หัวข้อ “%t”"/>
+<l:template name="simplesect" text="หัวข้อ “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="ตอบ: %n"/>
+<l:template name="appendix" text="ภาคผนวก %n"/>
+<l:template name="bridgehead" text="ตอนที่ %n"/>
+<l:template name="chapter" text="บทที่ %n"/>
+<l:template name="equation" text="สมการ %n"/>
+<l:template name="example" text="ตัวอย่าง %n"/>
+<l:template name="figure" text="รูป %n"/>
+<l:template name="part" text="ภาค %n"/>
+<l:template name="procedure" text="ระเบียบการ %n"/>
+<l:template name="productionset" text="ผลิต %n"/>
+<l:template name="qandadiv" text="ถาม-ตอบ %n"/>
+<l:template name="qandaentry" text="ถาม: %n"/>
+<l:template name="question" text="ถาม: %n"/>
+<l:template name="sect1" text="ตอนที่ %n"/>
+<l:template name="sect2" text="ตอนที่ %n"/>
+<l:template name="sect3" text="ตอนที่ %n"/>
+<l:template name="sect4" text="ตอนที่ %n"/>
+<l:template name="sect5" text="ตอนที่ %n"/>
+<l:template name="section" text="ตอนที่ %n"/>
+<l:template name="table" text="ตาราง %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="ภาคผนวก %n, %t"/>
+<l:template name="bridgehead" text="ตอนที่ %n, “%t”"/>
+<l:template name="chapter" text="บทที่ %n, %t"/>
+<l:template name="equation" text="สมการ %n, “%t”"/>
+<l:template name="example" text="ตัวอย่าง %n, “%t”"/>
+<l:template name="figure" text="รูป %n, “%t”"/>
+<l:template name="part" text="ภาค %n, “%t”"/>
+<l:template name="procedure" text="ระเบียบการ %n, “%t”"/>
+<l:template name="productionset" text="ผลิต %n, “%t”"/>
+<l:template name="qandadiv" text="ถาม-ตอบ %n, “%t”"/>
+<l:template name="refsect1" text="หัวข้อ “%t”"/>
+<l:template name="refsect2" text="หัวข้อ “%t”"/>
+<l:template name="refsect3" text="หัวข้อ “%t”"/>
+<l:template name="refsection" text="หัวข้อ “%t”"/>
+<l:template name="sect1" text="ตอนที่ %n, “%t”"/>
+<l:template name="sect2" text="ตอนที่ %n, “%t”"/>
+<l:template name="sect3" text="ตอนที่ %n, “%t”"/>
+<l:template name="sect4" text="ตอนที่ %n, “%t”"/>
+<l:template name="sect5" text="ตอนที่ %n, “%t”"/>
+<l:template name="section" text="ตอนที่ %n, “%t”"/>
+<l:template name="simplesect" text="หัวข้อ “%t”"/>
+<l:template name="table" text="ตาราง %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" และ "/>
+<l:template name="seplast" text=", และ "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="ดู %t"/>
+<l:template name="seealso" text="ดูเพิ่มเติม %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="ผู้อ่าน: "/>
+<l:template name="MsgLevel" text="ระดับ: "/>
+<l:template name="MsgOrig" text="ที่มา: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041e Thai"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/titles.xsl b/docs/xsl-generic/common/titles.xsl
new file mode 100644
index 00000000..62e1db56
--- /dev/null
+++ b/docs/xsl-generic/common/titles.xsl
@@ -0,0 +1,740 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: titles.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- title markup -->
+
+<doc:mode mode="title.markup" xmlns="">
+<refpurpose>Provides access to element titles</refpurpose>
+<refdescription id="title.markup-desc">
+<para>Processing an element in the
+<literal role="mode">title.markup</literal> mode produces the
+title of the element. This does not include the label.
+</para>
+</refdescription>
+</doc:mode>
+
+<xsl:template match="*" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+ <xsl:choose>
+ <!-- * FIXME: this should handle other *info elements as well -->
+ <!-- * but this is good enough for now. -->
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="title[1]|info/title[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'partintro'">
+ <!-- partintro's don't have titles, use the parent (part or reference)
+ title instead. -->
+ <xsl:apply-templates select="parent::*" mode="title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$verbose != 0">
+ <xsl:message>
+ <xsl:text>Request for title of element with no title: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:text> (id="</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>")</xsl:text>
+ </xsl:when>
+ <xsl:when test="@xml:id">
+ <xsl:text> (xml:id="</xsl:text>
+ <xsl:value-of select="@xml:id"/>
+ <xsl:text>")</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:message>
+ </xsl:if>
+ <xsl:text>???TITLE???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="title" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- only occurs in HTML Tables! -->
+<xsl:template match="caption" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="set" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(setinfo/title|info/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="book" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(bookinfo/title|info/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="part" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(partinfo/title|info/title|docinfo/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+<!--
+ <xsl:message>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$allow-anchors"/>
+ </xsl:message>
+-->
+
+ <xsl:variable name="title" select="(docinfo/title
+ |info/title
+ |prefaceinfo/title
+ |chapterinfo/title
+ |appendixinfo/title
+ |title)[1]"/>
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="dedication" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Dedication'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="colophon" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Colophon'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="article" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(artheader/title
+ |articleinfo/title
+ |info/title
+ |title)[1]"/>
+
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="reference" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(referenceinfo/title|docinfo/title|info/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refentry" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="refmeta" select=".//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select=".//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]" mode="title.markup"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc" mode="title.markup"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]" mode="title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>REFENTRY WITHOUT TITLE???</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:copy-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="refentrytitle|refname|refdescriptor" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3|refsection
+ |simplesect"
+ mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(info/title
+ |sectioninfo/title
+ |sect1info/title
+ |sect2info/title
+ |sect3info/title
+ |sect4info/title
+ |sect5info/title
+ |refsect1info/title
+ |refsect2info/title
+ |refsect3info/title
+ |refsectioninfo/title
+ |title)[1]"/>
+
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="title.markup">
+ <xsl:apply-templates mode="title.markup"/>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <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>
+
+<xsl:template match="bibliography" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(bibliographyinfo/title|info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Bibliography'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossary" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(glossaryinfo/title|info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.element.name">
+ <xsl:with-param name="element.name" select="local-name(.)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossdiv" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>ERROR: glossdiv missing its required title</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="glossterm" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="glossterm" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="index" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(indexinfo/title|info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Index'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(setindexinfo/title|info/title|title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'SetIndex'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="figure|example|equation" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="title|info/title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="table" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(title|caption)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="procedure" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="task" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="sidebar" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(info/title|sidebarinfo/title|title)[1]"
+ mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="abstract" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title|info/title">
+ <xsl:apply-templates select="(title|info/title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Abstract'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="caution|tip|warning|important|note" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(title|info/title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='note'">Note</xsl:when>
+ <xsl:when test="local-name(.)='important'">Important</xsl:when>
+ <xsl:when test="local-name(.)='caution'">Caution</xsl:when>
+ <xsl:when test="local-name(.)='warning'">Warning</xsl:when>
+ <xsl:when test="local-name(.)='tip'">Tip</xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="question" mode="title.markup">
+ <!-- questions don't have titles -->
+ <xsl:text>Question</xsl:text>
+</xsl:template>
+
+<xsl:template match="answer" mode="title.markup">
+ <!-- answers don't have titles -->
+ <xsl:text>Answer</xsl:text>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="title.markup">
+ <!-- qandaentrys are represented by the first question in them -->
+ <xsl:text>Question</xsl:text>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:variable name="title" select="(info/title|
+ blockinfo/title|
+ title)[1]"/>
+ <xsl:choose>
+ <xsl:when test="$title">
+ <xsl:apply-templates select="$title" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'QandASet'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <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>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="book|preface|chapter|appendix" mode="titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="titleabbrev" select="(docinfo/titleabbrev
+ |bookinfo/titleabbrev
+ |info/titleabbrev
+ |prefaceinfo/titleabbrev
+ |chapterinfo/titleabbrev
+ |appendixinfo/titleabbrev
+ |titleabbrev)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$titleabbrev">
+ <xsl:apply-templates select="$titleabbrev" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="article" mode="titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="titleabbrev" select="(artheader/titleabbrev
+ |articleinfo/titleabbrev
+ |info/titleabbrev
+ |titleabbrev)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$titleabbrev">
+ <xsl:apply-templates select="$titleabbrev" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3
+ |simplesect"
+ mode="titleabbrev.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="titleabbrev" select="(info/titleabbrev
+ |sectioninfo/titleabbrev
+ |sect1info/titleabbrev
+ |sect2info/titleabbrev
+ |sect3info/titleabbrev
+ |sect4info/titleabbrev
+ |sect5info/titleabbrev
+ |refsect1info/titleabbrev
+ |refsect2info/titleabbrev
+ |refsect3info/titleabbrev
+ |titleabbrev)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$titleabbrev">
+ <xsl:apply-templates select="$titleabbrev" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="$allow-anchors != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="no.anchor.mode">
+ <!-- Switch to normal mode if no links -->
+ <xsl:choose>
+ <xsl:when test="descendant-or-self::footnote or
+ descendant-or-self::anchor or
+ descendant-or-self::ulink or
+ descendant-or-self::link or
+ descendant-or-self::olink or
+ descendant-or-self::xref or
+ descendant-or-self::indexterm">
+
+ <xsl:apply-templates mode="no.anchor.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="footnote" mode="no.anchor.mode">
+ <!-- nop, suppressed -->
+</xsl:template>
+
+<xsl:template match="anchor" mode="no.anchor.mode">
+ <!-- nop, suppressed -->
+</xsl:template>
+
+<xsl:template match="ulink" mode="no.anchor.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="link" mode="no.anchor.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="olink" mode="no.anchor.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="no.anchor.mode">
+ <!-- nop, suppressed -->
+</xsl:template>
+
+<xsl:template match="xref" mode="no.anchor.mode">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="refelem" select="local-name($target)"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XRef to nonexistent id: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/common/tl.xml b/docs/xsl-generic/common/tl.xml
new file mode 100644
index 00000000..b4894f23
--- /dev/null
+++ b/docs/xsl-generic/common/tl.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="tl" english-language-name="Tagalog">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/tl.xml -->
+<!-- * -->
+<!-- * E-mail the edited tl.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Abstrak"/>
+<l:gentext key="abstract" text="Abstrak"/>
+<l:gentext key="Answer" text="Sagot:"/>
+<l:gentext key="answer" text="Sagot:"/>
+<l:gentext key="Appendix" text="Apendiks"/>
+<l:gentext key="appendix" text="Apendiks"/>
+<l:gentext key="Article" text="Artikulo"/>
+<l:gentext key="article" text="Artikulo"/>
+<l:gentext key="Author" text="May Akda"/>
+<l:gentext key="Bibliography" text="Bibliograpiya"/>
+<l:gentext key="bibliography" text="Bibliograpiya"/>
+<l:gentext key="Book" text="Libro"/>
+<l:gentext key="book" text="Libro"/>
+<l:gentext key="CAUTION" text="BABALA"/>
+<l:gentext key="Caution" text="Babala"/>
+<l:gentext key="caution" text="Babala"/>
+<l:gentext key="Chapter" text="Kabanata"/>
+<l:gentext key="chapter" text="Kabanata"/>
+<l:gentext key="Colophon" text="Kolopon"/>
+<l:gentext key="colophon" text="Kolopon"/>
+<l:gentext key="Copyright" text="Copyright"/>
+<l:gentext key="copyright" text="Copyright"/>
+<l:gentext key="Dedication" text="Pag-aalay"/>
+<l:gentext key="dedication" text="Pag-aalay"/>
+<l:gentext key="Edition" text="Edisyon"/>
+<l:gentext key="edition" text="Ediisyon"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Equation"/>
+<l:gentext key="equation" text="Equation"/>
+<l:gentext key="Example" text="Halimbawa"/>
+<l:gentext key="example" text="Halimbawa"/>
+<l:gentext key="Figure" text="Pigyur"/>
+<l:gentext key="figure" text="Pigyur"/>
+<l:gentext key="Glossary" text="Talahuguhanan"/>
+<l:gentext key="glossary" text="Talahuguhanan"/>
+<l:gentext key="GlossSee" text="Tingnan Ang"/>
+<l:gentext key="glosssee" text="Tingnan Ang"/>
+<l:gentext key="GlossSeeAlso" text="Tingnan Din Ang"/>
+<l:gentext key="glossseealso" text="Tingnan din ang"/>
+<l:gentext key="IMPORTANT" text="MAHALAGA"/>
+<l:gentext key="important" text="Mahalaga"/>
+<l:gentext key="Important" text="Mahalaga"/>
+<l:gentext key="Index" text="Indeks"/>
+<l:gentext key="index" text="Indeks"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Paunawang Legal"/>
+<l:gentext key="legalnotice" text="Paunawang Legal"/>
+<l:gentext key="MsgAud" text="Awdiyens"/>
+<l:gentext key="msgaud" text="Awdiyens"/>
+<l:gentext key="MsgLevel" text="Lebel"/>
+<l:gentext key="msglevel" text="Lebel"/>
+<l:gentext key="MsgOrig" text="Pinagmulan"/>
+<l:gentext key="msgorig" text="Pinagmulan"/>
+<l:gentext key="NOTE" text="TALA"/>
+<l:gentext key="Note" text="Tala"/>
+<l:gentext key="note" text="Tala"/>
+<l:gentext key="Part" text="Bahagi"/>
+<l:gentext key="part" text="Bahagi"/>
+<l:gentext key="Preface" text="Panimula"/>
+<l:gentext key="preface" text="Panimula"/>
+<l:gentext key="Procedure" text="Mga Hakbang"/>
+<l:gentext key="procedure" text="Mga Hakbang"/>
+<l:gentext key="ProductionSet" text="Produksiyon"/>
+<l:gentext key="PubDate" text="Petsa ng Paglimbag"/>
+<l:gentext key="pubdate" text="Petsa ng Paglimbag"/>
+<l:gentext key="Published" text="Nalimbag"/>
+<l:gentext key="published" text="Nalimbag"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="Tanong at Sagot"/>
+<l:gentext key="qandadiv" text="Tanong at Sagot"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Tanong:"/>
+<l:gentext key="question" text="Tanong:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Reperens"/>
+<l:gentext key="reference" text="Reperens"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Pangalan"/>
+<l:gentext key="refname" text="Pangalan"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Buod"/>
+<l:gentext key="refsynopsisdiv" text="Buod"/>
+<l:gentext key="RevHistory" text="Talaan Ng Mga Rebisyon"/>
+<l:gentext key="revhistory" text="Talaan ng mga Rebisyon"/>
+<l:gentext key="revision" text="Rebisyon"/>
+<l:gentext key="Revision" text="Revision"/>
+<l:gentext key="sect1" text="Bahagi"/>
+<l:gentext key="sect2" text="Bahagi"/>
+<l:gentext key="sect3" text="Bahagi"/>
+<l:gentext key="sect4" text="Bahagi"/>
+<l:gentext key="sect5" text="Bahagi"/>
+<l:gentext key="section" text="Bahagi"/>
+<l:gentext key="Section" text="Bahagi"/>
+<l:gentext key="see" text="tingnan"/>
+<l:gentext key="See" text="Tingnan"/>
+<l:gentext key="seealso" text="tingnan din ang"/>
+<l:gentext key="Seealso" text="Tingnan din ang"/>
+<l:gentext key="SeeAlso" text="Tingnan Din Ang"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Indeks ng Set"/>
+<l:gentext key="SetIndex" text="Indeks ng Set"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="hakbang"/>
+<l:gentext key="Step" text="Hakbang"/>
+<l:gentext key="table" text="Talaan"/>
+<l:gentext key="Table" text="Talaan"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Tip"/>
+<l:gentext key="TIP" text="TIP"/>
+<l:gentext key="Tip" text="Tip"/>
+<l:gentext key="Warning" text="Babala"/>
+<l:gentext key="warning" text="Babala"/>
+<l:gentext key="WARNING" text="BABALA"/>
+<l:gentext key="and" text="at"/>
+<l:gentext key="by" text="ni"/>
+<l:gentext key="Edited" text="In-edit"/>
+<l:gentext key="edited" text="In-edit"/>
+<l:gentext key="Editedby" text="In-edit ni"/>
+<l:gentext key="editedby" text="In-edit ni"/>
+<l:gentext key="in" text="sa"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="hindi kilalang element"/>
+<l:gentext key="notes" text="Mga tala"/>
+<l:gentext key="Notes" text="Mga Tala"/>
+<l:gentext key="Pgs" text="p."/>
+<l:gentext key="pgs" text="p."/>
+<l:gentext key="Revisedby" text="Nirebisa ni: "/>
+<l:gentext key="revisedby" text="Nirebisa ni: "/>
+<l:gentext key="TableNotes" text="Mga Tala"/>
+<l:gentext key="tablenotes" text="Mga Tala"/>
+<l:gentext key="TableofContents" text="Talaan ng Nilalaman"/>
+<l:gentext key="tableofcontents" text="Talaan ng Nilalaman"/>
+<l:gentext key="unexpectedelementname" text="hindi inaasahang element"/>
+<l:gentext key="unsupported" text="hindi sinusuportahan"/>
+<l:gentext key="xrefto" text="xref sa"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Listahan ng mga Ekwasyon"/>
+<l:gentext key="ListofEquations" text="Listahan Ng Mga Ekwasyon"/>
+<l:gentext key="ListofExamples" text="Listahan Ng Mga Halimbawa"/>
+<l:gentext key="listofexamples" text="Listahan ng mga Halimbawa"/>
+<l:gentext key="ListofFigures" text="Listahan Ng Mga Pigyur "/>
+<l:gentext key="listoffigures" text="Listahan ng mga Pigyur"/>
+<l:gentext key="ListofProcedures" text="Listahan Ng Mga Prosidyur"/>
+<l:gentext key="listofprocedures" text="Listahan ng mga Prosidyur"/>
+<l:gentext key="listoftables" text="Listahan ng mga Talaan"/>
+<l:gentext key="ListofTables" text="Listahan Ng Mga Talaan"/>
+<l:gentext key="ListofUnknown" text="Listahan Ng Mga Di Alam"/>
+<l:gentext key="listofunknown" text="Listahan ng mga Di Alam"/>
+<l:gentext key="nav-home" text="Home"/>
+<l:gentext key="nav-next" text="Sulong"/>
+<l:gentext key="nav-next-sibling" text="Mabilis na pasulong"/>
+<l:gentext key="nav-prev" text="Balik"/>
+<l:gentext key="nav-prev-sibling" text="Mabilis na pabalik"/>
+<l:gentext key="nav-up" text="Taas"/>
+<l:gentext key="nav-toc" text="TnN"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="taas"/>
+<l:gentext key="below" text="baba"/>
+<l:gentext key="sectioncalled" text="ang bahaging tinatawag na"/>
+<l:gentext key="index symbols" text="Mga simbolo"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Apendiks %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Kabanata %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Equation %n. %t"/>
+<l:template name="example" text="Halimbawa %n. %t"/>
+<l:template name="figure" text="Pigyur %n. %t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Bahagi %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Mga Hakbang %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Produksiyon %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Talaan %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Apendiks %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Kabanata %n. %t"/>
+<l:template name="part" text="Bahagi %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="Sagot: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t"/>
+<l:template name="foilgroup" text="%t"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Tanong: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Tanong: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" sa %o"/>
+<l:template name="olink.page.citation" text=" (pahina %p)"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(pahina %p)"/>
+<l:template name="docname" text=" sa %o"/>
+<l:template name="docnamelong" text=" sa dokumento na %o"/>
+<l:template name="pageabbrev" text="(p. %p)"/>
+<l:template name="Page" text="Pahina %p"/>
+<l:template name="bridgehead" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="refsection" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="refsect1" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="refsect2" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="refsect3" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="sect1" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="sect2" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="sect3" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="sect4" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="sect5" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="section" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="simplesect" text="ang bahaging tinatawag na “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Sagot: %n"/>
+<l:template name="appendix" text="Apendiks %n"/>
+<l:template name="bridgehead" text="Bahagi %n"/>
+<l:template name="chapter" text="Kabanata %n"/>
+<l:template name="equation" text="Equation %n"/>
+<l:template name="example" text="Halimbawa %n"/>
+<l:template name="figure" text="Pigyur %n"/>
+<l:template name="part" text="Bahagi %n"/>
+<l:template name="procedure" text="Mga Hakbang %n"/>
+<l:template name="productionset" text="Produksiyon %n"/>
+<l:template name="qandadiv" text="Tanong at Sagot %n"/>
+<l:template name="qandaentry" text="Tanong: %n"/>
+<l:template name="question" text="Tanong: %n"/>
+<l:template name="sect1" text="Bahagi %n"/>
+<l:template name="sect2" text="Bahagi %n"/>
+<l:template name="sect3" text="Bahagi %n"/>
+<l:template name="sect4" text="Bahagi %n"/>
+<l:template name="sect5" text="Bahagi %n"/>
+<l:template name="section" text="Bahagi %n"/>
+<l:template name="table" text="Talaan %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Apendiks %n, %t"/>
+<l:template name="bridgehead" text="Bahagi %n, “%t”"/>
+<l:template name="chapter" text="Kabanata %n, %t"/>
+<l:template name="equation" text="Equation %n, “%t”"/>
+<l:template name="example" text="Halimbawa %n, “%t”"/>
+<l:template name="figure" text="Pigyur %n, “%t”"/>
+<l:template name="part" text="Bahagi %n, “%t”"/>
+<l:template name="procedure" text="Mga Hakbang %n, “%t”"/>
+<l:template name="productionset" text="Produksiyon %n, “%t”"/>
+<l:template name="qandadiv" text="Tanong at Sagot %n, “%t”"/>
+<l:template name="refsect1" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="refsect2" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="refsect3" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="refsection" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="sect1" text="Bahagi %n, “%t”"/>
+<l:template name="sect2" text="Bahagi %n, “%t”"/>
+<l:template name="sect3" text="Bahagi %n, “%t”"/>
+<l:template name="sect4" text="Bahagi %n, “%t”"/>
+<l:template name="sect5" text="Bahagi %n, “%t”"/>
+<l:template name="section" text="Bahagi %n, “%t”"/>
+<l:template name="simplesect" text="ang bahaging tinatawag na “%t”"/>
+<l:template name="table" text="Talaan %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" at "/>
+<l:template name="seplast" text=", at "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Tingnan Ang %t"/>
+<l:template name="seealso" text="Tingnan Din Ang %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Awdiyens: "/>
+<l:template name="MsgLevel" text="Lebel: "/>
+<l:template name="MsgOrig" text="Pinagmulan: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Depinisyon: "/>
+<l:template name="suffix" text="]"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Enero"/>
+<l:template name="February" text="Pebrero"/>
+<l:template name="March" text="Marso"/>
+<l:template name="April" text="Abril"/>
+<l:template name="May" text="Mayo"/>
+<l:template name="June" text="Hunyo"/>
+<l:template name="July" text="Hulyo"/>
+<l:template name="August" text="Agosto"/>
+<l:template name="September" text="Setyembre"/>
+<l:template name="October" text="Oktubre"/>
+<l:template name="November" text="Nobyembre"/>
+<l:template name="December" text="Disyembre"/>
+<l:template name="Monday" text="Lunes"/>
+<l:template name="Tuesday" text="Martes"/>
+<l:template name="Wednesday" text="Miyeskules"/>
+<l:template name="Thursday" text="Huwebes"/>
+<l:template name="Friday" text="Biyernes"/>
+<l:template name="Saturday" text="Sabado"/>
+<l:template name="Sunday" text="Linggo"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Ene"/>
+<l:template name="Feb" text="Peb"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Abr"/>
+<l:template name="May" text="Mayo"/>
+<l:template name="Jun" text="Hun"/>
+<l:template name="Jul" text="Hul"/>
+<l:template name="Aug" text="Ago"/>
+<l:template name="Sep" text="Set"/>
+<l:template name="Oct" text="Okt"/>
+<l:template name="Nov" text="Nob"/>
+<l:template name="Dec" text="Dis"/>
+<l:template name="Mon" text="Lun"/>
+<l:template name="Tue" text="Mar"/>
+<l:template name="Wed" text="Miy"/>
+<l:template name="Thu" text="Huw"/>
+<l:template name="Fri" text="Biy"/>
+<l:template name="Sat" text="Sab"/>
+<l:template name="Sun" text="Lin"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0409 Tagalog (PHILIPPINES)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/tr.xml b/docs/xsl-generic/common/tr.xml
new file mode 100644
index 00000000..b17b9408
--- /dev/null
+++ b/docs/xsl-generic/common/tr.xml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="tr" english-language-name="Turkish">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/tr.xml -->
+<!-- * -->
+<!-- * E-mail the edited tr.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Özet"/>
+<l:gentext key="abstract" text="Özet"/>
+<l:gentext key="Answer" text="Cevap:"/>
+<l:gentext key="answer" text="Cevap:"/>
+<l:gentext key="Appendix" text="Ek"/>
+<l:gentext key="appendix" text="Ek"/>
+<l:gentext key="Article" text="Makale"/>
+<l:gentext key="article" text="Makale"/>
+<l:gentext key="Author" text="Yazar"/>
+<l:gentext key="Bibliography" text="Kaynakça"/>
+<l:gentext key="bibliography" text="Kaynakça"/>
+<l:gentext key="Book" text="Kitap"/>
+<l:gentext key="book" text="Kitap"/>
+<l:gentext key="CAUTION" text="DİKKAT"/>
+<l:gentext key="Caution" text="Dikkat"/>
+<l:gentext key="caution" text="Dikkat"/>
+<l:gentext key="Chapter" text="Bölüm"/>
+<l:gentext key="chapter" text="Bölüm"/>
+<l:gentext key="Colophon" text="Kitap hakkında"/>
+<l:gentext key="colophon" text="Kitap hakkında"/>
+<l:gentext key="Copyright" text="Telif Hakkı"/>
+<l:gentext key="copyright" text="Telif Hakkı"/>
+<l:gentext key="Dedication" text="İthaf"/>
+<l:gentext key="dedication" text="İthaf"/>
+<l:gentext key="Edition" text="Baskı"/>
+<l:gentext key="edition" text="Baskı"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Denklem"/>
+<l:gentext key="equation" text="Denklem"/>
+<l:gentext key="Example" text="Örnek"/>
+<l:gentext key="example" text="Örnek"/>
+<l:gentext key="Figure" text="Şekil"/>
+<l:gentext key="figure" text="Şekil"/>
+<l:gentext key="Glossary" text="Sözlük"/>
+<l:gentext key="glossary" text="Sözlük"/>
+<l:gentext key="GlossSee" text="Bkz."/>
+<l:gentext key="glosssee" text="Bkz."/>
+<l:gentext key="GlossSeeAlso" text="Bkz."/>
+<l:gentext key="glossseealso" text="Bkz."/>
+<l:gentext key="IMPORTANT" text="ÖNEMLİ"/>
+<l:gentext key="important" text="Önemli"/>
+<l:gentext key="Important" text="Önemli"/>
+<l:gentext key="Index" text="Dizin"/>
+<l:gentext key="index" text="Dizin"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Yasal Uyarı"/>
+<l:gentext key="legalnotice" text="Yasal Uyarı"/>
+<l:gentext key="MsgAud" text="Hedef Okuyucu"/>
+<l:gentext key="msgaud" text="Hedef Okuyucu"/>
+<l:gentext key="MsgLevel" text="Düzey"/>
+<l:gentext key="msglevel" text="Düzey"/>
+<l:gentext key="MsgOrig" text="Kaynak"/>
+<l:gentext key="msgorig" text="Kaynak"/>
+<l:gentext key="NOTE" text="NOT"/>
+<l:gentext key="Note" text="Not"/>
+<l:gentext key="note" text="Not"/>
+<l:gentext key="Part" text="Kısım"/>
+<l:gentext key="part" text="Kısım"/>
+<l:gentext key="Preface" text="Önsöz"/>
+<l:gentext key="preface" text="Önsöz"/>
+<l:gentext key="Procedure" text="Yönerge"/>
+<l:gentext key="procedure" text="Yönerge"/>
+<l:gentext key="ProductionSet" text="Prodüksiyon"/>
+<l:gentext key="PubDate" text="Yayımlanma Tarihi"/>
+<l:gentext key="pubdate" text="Yayımlanma Tarihi"/>
+<l:gentext key="Published" text="Yayımlanma"/>
+<l:gentext key="published" text="Yayımlanma"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="S ve C"/>
+<l:gentext key="qandadiv" text="S ve C"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="Soru:"/>
+<l:gentext key="question" text="Soru:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Referans"/>
+<l:gentext key="reference" text="Referans"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Referans Adı"/>
+<l:gentext key="refname" text="Referans Adı"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Özet"/>
+<l:gentext key="refsynopsisdiv" text="Özet"/>
+<l:gentext key="RevHistory" text="Baskı Tarihçesi"/>
+<l:gentext key="revhistory" text="Baskı Tarihçesi"/>
+<l:gentext key="revision" text="Baskı"/>
+<l:gentext key="Revision" text="Baskı"/>
+<l:gentext key="sect1" text="Kısım"/>
+<l:gentext key="sect2" text="Kısım"/>
+<l:gentext key="sect3" text="Kısım"/>
+<l:gentext key="sect4" text="Kısım"/>
+<l:gentext key="sect5" text="Kısım"/>
+<l:gentext key="section" text="Kısım"/>
+<l:gentext key="Section" text="Kısım"/>
+<l:gentext key="see" text="bkz."/>
+<l:gentext key="See" text="Bkz."/>
+<l:gentext key="seealso" text="Bkz."/>
+<l:gentext key="Seealso" text="Bakınız"/>
+<l:gentext key="SeeAlso" text="Bakınız"/>
+<l:gentext key="set" text="Takım"/>
+<l:gentext key="Set" text="Takım"/>
+<l:gentext key="setindex" text="Takım Dizini"/>
+<l:gentext key="SetIndex" text="Takım Dizini"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="kenar çubuğu"/>
+<l:gentext key="step" text="adım"/>
+<l:gentext key="Step" text="Adım"/>
+<l:gentext key="table" text="Tablo"/>
+<l:gentext key="Table" text="Tablo"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="İpucu"/>
+<l:gentext key="TIP" text="İPUCU"/>
+<l:gentext key="Tip" text="İpucu"/>
+<l:gentext key="Warning" text="Uyarı"/>
+<l:gentext key="warning" text="Uyarı"/>
+<l:gentext key="WARNING" text="UYARI"/>
+<l:gentext key="and" text="ve"/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Yayına hazırlayan"/>
+<l:gentext key="edited" text="yayına hazırlayan"/>
+<l:gentext key="Editedby" text="Yayına hazırlayan"/>
+<l:gentext key="editedby" text="yayına hazırlayan"/>
+<l:gentext key="in" text=""/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="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üzeltmeler: "/>
+<l:gentext key="revisedby" text="Düzeltmeler: "/>
+<l:gentext key="TableNotes" text="Notlar"/>
+<l:gentext key="tablenotes" text="Notlar"/>
+<l:gentext key="TableofContents" text="İçindekiler"/>
+<l:gentext key="tableofcontents" text="İçindekiler"/>
+<l:gentext key="unexpectedelementname" text="Beklenmeyen eleman adı"/>
+<l:gentext key="unsupported" text="desteklenmiyor"/>
+<l:gentext key="xrefto" text=""/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Denklemler"/>
+<l:gentext key="ListofEquations" text="Denklemler"/>
+<l:gentext key="ListofExamples" text="Örnekler"/>
+<l:gentext key="listofexamples" text="Örnekler"/>
+<l:gentext key="ListofFigures" text="Şekiller"/>
+<l:gentext key="listoffigures" text="Şekiller"/>
+<l:gentext key="ListofProcedures" text="Yönergeler"/>
+<l:gentext key="listofprocedures" text="Yönergeler"/>
+<l:gentext key="listoftables" text="Tablolar"/>
+<l:gentext key="ListofTables" text="Tablolar"/>
+<l:gentext key="ListofUnknown" text="Bilinmeyenler"/>
+<l:gentext key="listofunknown" text="Bilinmeyenler"/>
+<l:gentext key="nav-home" text="Başlangıç"/>
+<l:gentext key="nav-next" text="Sonraki"/>
+<l:gentext key="nav-next-sibling" text="Sonraki Bölüm"/>
+<l:gentext key="nav-prev" text="Önceki"/>
+<l:gentext key="nav-prev-sibling" text="Önceki Bölüm"/>
+<l:gentext key="nav-up" text="Yukarı"/>
+<l:gentext key="nav-toc" text="İçindekiler"/>
+<l:gentext key="Draft" text="Taslak"/>
+<l:gentext key="above" text="üstünde"/>
+<l:gentext key="below" text="altında"/>
+<l:gentext key="sectioncalled" text=""/>
+<l:gentext key="index symbols" text="Semboller"/>
+<l:gentext key="lowercase.alpha" text="abcçdefgğhıijklmnoöprsştuüvyz"/>
+<l:gentext key="uppercase.alpha" text="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="3"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Ek %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Bölüm %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Denklem %n. %t"/>
+<l:template name="example" text="Örnek %n. %t"/>
+<l:template name="figure" text="Şekil %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Kısım %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Yönerge %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Prodüksiyon %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Tablo %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Ek %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Bölüm %n. %t"/>
+<l:template name="part" text="Kısım %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="Soru: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="Soru: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(sayfa %p)"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(shf. %p)"/>
+<l:template name="Page" text="Sayfa %p"/>
+<l:template name="bridgehead" text=" “%t”"/>
+<l:template name="refsection" text=" “%t”"/>
+<l:template name="refsect1" text=" “%t”"/>
+<l:template name="refsect2" text=" “%t”"/>
+<l:template name="refsect3" text=" “%t”"/>
+<l:template name="sect1" text=" “%t”"/>
+<l:template name="sect2" text=" “%t”"/>
+<l:template name="sect3" text=" “%t”"/>
+<l:template name="sect4" text=" “%t”"/>
+<l:template name="sect5" text=" “%t”"/>
+<l:template name="section" text=" “%t”"/>
+<l:template name="simplesect" text=" “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Cevap: %n"/>
+<l:template name="appendix" text="Ek %n"/>
+<l:template name="bridgehead" text="Kısım %n"/>
+<l:template name="chapter" text="Bölüm %n"/>
+<l:template name="equation" text="Denklem %n"/>
+<l:template name="example" text="Örnek %n"/>
+<l:template name="figure" text="Şekil %n"/>
+<l:template name="part" text="Kısım %n"/>
+<l:template name="procedure" text="Yönerge %n"/>
+<l:template name="productionset" text="Prodüksiyon %n"/>
+<l:template name="qandadiv" text="S ve C %n"/>
+<l:template name="qandaentry" text="Soru: %n"/>
+<l:template name="question" text="Soru: %n"/>
+<l:template name="sect1" text="Kısım %n"/>
+<l:template name="sect2" text="Kısım %n"/>
+<l:template name="sect3" text="Kısım %n"/>
+<l:template name="sect4" text="Kısım %n"/>
+<l:template name="sect5" text="Kısım %n"/>
+<l:template name="section" text="Kısım %n"/>
+<l:template name="table" text="Tablo %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Ek %n, %t"/>
+<l:template name="bridgehead" text="Kısım %n, “%t”"/>
+<l:template name="chapter" text="Bölüm %n, %t"/>
+<l:template name="equation" text="Denklem %n, “%t”"/>
+<l:template name="example" text="Örnek %n, “%t”"/>
+<l:template name="figure" text="Şekil %n, “%t”"/>
+<l:template name="part" text="Kısım %n, “%t”"/>
+<l:template name="procedure" text="Yönerge %n, “%t”"/>
+<l:template name="productionset" text="Prodüksiyon %n, “%t”"/>
+<l:template name="qandadiv" text="S ve C %n, “%t”"/>
+<l:template name="refsect1" text=" “%t”"/>
+<l:template name="refsect2" text=" “%t”"/>
+<l:template name="refsect3" text=" “%t”"/>
+<l:template name="refsection" text=" “%t”"/>
+<l:template name="sect1" text="Kısım %n, “%t”"/>
+<l:template name="sect2" text="Kısım %n, “%t”"/>
+<l:template name="sect3" text="Kısım %n, “%t”"/>
+<l:template name="sect4" text="Kısım %n, “%t”"/>
+<l:template name="sect5" text="Kısım %n, “%t”"/>
+<l:template name="section" text="Kısım %n, “%t”"/>
+<l:template name="simplesect" text=" “%t”"/>
+<l:template name="table" text="Tablo %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" ve "/>
+<l:template name="seplast" text=", ve "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Bkz. %t"/>
+<l:template name="seealso" text="Bkz. %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Hedef Okuyucu: "/>
+<l:template name="MsgLevel" text="Düzey: "/>
+<l:template name="MsgOrig" text="Kaynak: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="d/m/Y"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="Ocak"/>
+<l:template name="February" text="Şubat"/>
+<l:template name="March" text="Mart"/>
+<l:template name="April" text="Nisan"/>
+<l:template name="May" text="Mayıs"/>
+<l:template name="June" text="Haziran"/>
+<l:template name="July" text="Temmuz"/>
+<l:template name="August" text="Ağustos"/>
+<l:template name="September" text="Eylül"/>
+<l:template name="October" text="Ekim"/>
+<l:template name="November" text="Kasım"/>
+<l:template name="December" text="Aralık"/>
+<l:template name="Monday" text="Pazartesi"/>
+<l:template name="Tuesday" text="Salı"/>
+<l:template name="Wednesday" text="Çarşamba"/>
+<l:template name="Thursday" text="Perşembe"/>
+<l:template name="Friday" text="Cuma"/>
+<l:template name="Saturday" text="Cumartesi"/>
+<l:template name="Sunday" text="Pazar"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Oca"/>
+<l:template name="Feb" text="Şub"/>
+<l:template name="Mar" text="Mar"/>
+<l:template name="Apr" text="Nis"/>
+<l:template name="May" text="May"/>
+<l:template name="Jun" text="Haz"/>
+<l:template name="Jul" text="Tem"/>
+<l:template name="Aug" text="Ağu"/>
+<l:template name="Sep" text="Eyl"/>
+<l:template name="Oct" text="Eki"/>
+<l:template name="Nov" text="Kas"/>
+<l:template name="Dec" text="Ara"/>
+<l:template name="Mon" text="Pzt"/>
+<l:template name="Tue" text="Sal"/>
+<l:template name="Wed" text="Çar"/>
+<l:template name="Thu" text="Per"/>
+<l:template name="Fri" text="Cum"/>
+<l:template name="Sat" text="Cts"/>
+<l:template name="Sun" text="Paz"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x041f Turkish"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">Semboller</l:l>
+<l:l i="1">A</l:l>
+<l:l i="1">a</l:l>
+<l:l i="2">B</l:l>
+<l:l i="2">b</l:l>
+<l:l i="3">C</l:l>
+<l:l i="3">c</l:l>
+<l:l i="4">Ç</l:l>
+<l:l i="4">ç</l:l>
+<l:l i="5">D</l:l>
+<l:l i="5">d</l:l>
+<l:l i="6">E</l:l>
+<l:l i="6">e</l:l>
+<l:l i="7">F</l:l>
+<l:l i="7">f</l:l>
+<l:l i="8">G</l:l>
+<l:l i="8">g</l:l>
+<l:l i="9">Ğ</l:l>
+<l:l i="9">ğ</l:l>
+<l:l i="10">H</l:l>
+<l:l i="10">h</l:l>
+<l:l i="11">I</l:l>
+<l:l i="11">ı</l:l>
+<l:l i="12">İ</l:l>
+<l:l i="12">i</l:l>
+<l:l i="13">J</l:l>
+<l:l i="13">j</l:l>
+<l:l i="14">K</l:l>
+<l:l i="14">k</l:l>
+<l:l i="15">L</l:l>
+<l:l i="15">l</l:l>
+<l:l i="16">M</l:l>
+<l:l i="16">m</l:l>
+<l:l i="17">N</l:l>
+<l:l i="17">n</l:l>
+<l:l i="18">O</l:l>
+<l:l i="18">o</l:l>
+<l:l i="19">Ö</l:l>
+<l:l i="19">ö</l:l>
+<l:l i="20">P</l:l>
+<l:l i="20">p</l:l>
+<l:l i="21">R</l:l>
+<l:l i="21">r</l:l>
+<l:l i="22">S</l:l>
+<l:l i="22">s</l:l>
+<l:l i="23">Ş</l:l>
+<l:l i="23">ş</l:l>
+<l:l i="24">T</l:l>
+<l:l i="24">t</l:l>
+<l:l i="25">U</l:l>
+<l:l i="25">u</l:l>
+<l:l i="26">Ü</l:l>
+<l:l i="26">ü</l:l>
+<l:l i="27">V</l:l>
+<l:l i="27">v</l:l>
+<l:l i="28">Y</l:l>
+<l:l i="28">y</l:l>
+<l:l i="29">Z</l:l>
+<l:l i="29">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/uk.xml b/docs/xsl-generic/common/uk.xml
new file mode 100644
index 00000000..17678e55
--- /dev/null
+++ b/docs/xsl-generic/common/uk.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="uk" english-language-name="Ukrainian">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/uk.xml -->
+<!-- * -->
+<!-- * E-mail the edited uk.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Анотація"/>
+<l:gentext key="abstract" text="Анотація"/>
+<l:gentext key="Answer" text="В:"/>
+<l:gentext key="answer" text="в:"/>
+<l:gentext key="Appendix" text="Додаток"/>
+<l:gentext key="appendix" text="додаток"/>
+<l:gentext key="Article" text="Стаття"/>
+<l:gentext key="article" text="стаття"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Литература"/>
+<l:gentext key="bibliography" text="литература"/>
+<l:gentext key="Book" text="Книга"/>
+<l:gentext key="book" text="книга"/>
+<l:gentext key="CAUTION" text="ЗАСТЕРЕЖЕННЯ"/>
+<l:gentext key="Caution" text="Застереження"/>
+<l:gentext key="caution" text="застереження"/>
+<l:gentext key="Chapter" text="Розділ"/>
+<l:gentext key="chapter" text="розділ"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="Авторське право"/>
+<l:gentext key="copyright" text="авторське право"/>
+<l:gentext key="Dedication" text="Присвячення"/>
+<l:gentext key="dedication" text="присвячення"/>
+<l:gentext key="Edition" text="Видання"/>
+<l:gentext key="edition" text="видання"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Формула"/>
+<l:gentext key="equation" text="Формула"/>
+<l:gentext key="Example" text="Приклад"/>
+<l:gentext key="example" text="приклад"/>
+<l:gentext key="Figure" text="Рисунок"/>
+<l:gentext key="figure" text="Рисунок"/>
+<l:gentext key="Glossary" text="Глосарій"/>
+<l:gentext key="glossary" text="глосарій"/>
+<l:gentext key="GlossSee" text="Див."/>
+<l:gentext key="glosssee" text="див."/>
+<l:gentext key="GlossSeeAlso" text="Див. також"/>
+<l:gentext key="glossseealso" text="див. також"/>
+<l:gentext key="IMPORTANT" text="ВАЖЛИВО"/>
+<l:gentext key="important" text="важливо"/>
+<l:gentext key="Important" text="Важливо"/>
+<l:gentext key="Index" text="Предметный покажchcy;ик"/>
+<l:gentext key="index" text="предметный покажchcy;ик"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Правова примітка"/>
+<l:gentext key="legalnotice" text="правова примітка"/>
+<l:gentext key="MsgAud" text="Аудиторія"/>
+<l:gentext key="msgaud" text="аудиторія"/>
+<l:gentext key="MsgLevel" text="Рівень"/>
+<l:gentext key="msglevel" text="рівень"/>
+<l:gentext key="MsgOrig" text="Джерело"/>
+<l:gentext key="msgorig" text="джерело"/>
+<l:gentext key="NOTE" text="ПРИМІТКА"/>
+<l:gentext key="Note" text="Примітка"/>
+<l:gentext key="note" text="примітка"/>
+<l:gentext key="Part" text="Частина"/>
+<l:gentext key="part" text="частина"/>
+<l:gentext key="Preface" text="Передмова"/>
+<l:gentext key="preface" text="передмова"/>
+<l:gentext key="Procedure" text="Процедура"/>
+<l:gentext key="procedure" text="Процедура"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Опубліковано"/>
+<l:gentext key="published" text="опубліковано"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="П и В"/>
+<l:gentext key="qandadiv" text="П и В"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="П"/>
+<l:gentext key="question" text="п"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Посилання"/>
+<l:gentext key="reference" text="посилання"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Name"/>
+<l:gentext key="refname" text="Name"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Короткий огляд"/>
+<l:gentext key="refsynopsisdiv" text="короткий огляд"/>
+<l:gentext key="RevHistory" text="Опис змін"/>
+<l:gentext key="revhistory" text="опис змін"/>
+<l:gentext key="revision" text="перегляд"/>
+<l:gentext key="Revision" text="Перегляд"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="параграф"/>
+<l:gentext key="Section" text="Параграф"/>
+<l:gentext key="see" text="див."/>
+<l:gentext key="See" text="Див."/>
+<l:gentext key="seealso" text="сив. також"/>
+<l:gentext key="Seealso" text="Див. також"/>
+<l:gentext key="SeeAlso" text="Див. також"/>
+<l:gentext key="set" text="вибірка"/>
+<l:gentext key="Set" text="Вибірка"/>
+<l:gentext key="setindex" text="индекс вибірки"/>
+<l:gentext key="SetIndex" text="Индекс вибірки"/>
+<l:gentext key="Sidebar" text="Выділення"/>
+<l:gentext key="sidebar" text="выділення"/>
+<l:gentext key="step" text="крок"/>
+<l:gentext key="Step" text="Крок"/>
+<l:gentext key="table" text="таблиця"/>
+<l:gentext key="Table" text="Таблиця"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="підказка"/>
+<l:gentext key="TIP" text="ПІДКАЗКА"/>
+<l:gentext key="Tip" text="Підказка"/>
+<l:gentext key="Warning" text="Застереження"/>
+<l:gentext key="warning" text="застереження"/>
+<l:gentext key="WARNING" text="ЗАСТЕРЕЖЕННЯ"/>
+<l:gentext key="and" text=""/>
+<l:gentext key="by" text=""/>
+<l:gentext key="Edited" text="Пид редакцією"/>
+<l:gentext key="edited" text="пид редакцією"/>
+<l:gentext key="Editedby" text="Пид редакцією"/>
+<l:gentext key="editedby" text="пид редакцією"/>
+<l:gentext key="in" text="в"/>
+<l:gentext key="lastlistcomma" text="."/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="non-existant element"/>
+<l:gentext key="notes" text="примітки"/>
+<l:gentext key="Notes" text="Примітки"/>
+<l:gentext key="Pgs" text="Стор."/>
+<l:gentext key="pgs" text="стор."/>
+<l:gentext key="Revisedby" text="Коректура:;"/>
+<l:gentext key="revisedby" text="коректура:;"/>
+<l:gentext key="TableNotes" text="Примітки"/>
+<l:gentext key="tablenotes" text="примітки"/>
+<l:gentext key="TableofContents" text="Зміст"/>
+<l:gentext key="tableofcontents" text="зміст"/>
+<l:gentext key="unexpectedelementname" text="unexpected element name"/>
+<l:gentext key="unsupported" text="unsupported"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="список формул"/>
+<l:gentext key="ListofEquations" text="Список формул"/>
+<l:gentext key="ListofExamples" text="Список прикладів"/>
+<l:gentext key="listofexamples" text="список прикладів"/>
+<l:gentext key="ListofFigures" text="Список ілюстрацій"/>
+<l:gentext key="listoffigures" text="Список ілюстрацій"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="список таблиць"/>
+<l:gentext key="ListofTables" text="Список таблиц;ь"/>
+<l:gentext key="ListofUnknown" text="Невизначений список"/>
+<l:gentext key="listofunknown" text="невизначений список"/>
+<l:gentext key="nav-home" text="Початок"/>
+<l:gentext key="nav-next" text="далі"/>
+<l:gentext key="nav-next-sibling" text="далі по рівню"/>
+<l:gentext key="nav-prev" text="назад"/>
+<l:gentext key="nav-prev-sibling" text="назад по рівню"/>
+<l:gentext key="nav-up" text="Догори"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="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:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Додаток %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Розділ %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Формула %n. %t"/>
+<l:template name="example" text="Приклад %n. %t"/>
+<l:template name="figure" text="Рисунок %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Частина %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Процедура %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Таблиця %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Додаток %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="Розділ %n. %t"/>
+<l:template name="part" text="Частина %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="П %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="П %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="В: %n"/>
+<l:template name="appendix" text="Додаток %n"/>
+<l:template name="bridgehead" text="Параграф %n"/>
+<l:template name="chapter" text="Розділ %n"/>
+<l:template name="equation" text="Формула %n"/>
+<l:template name="example" text="Приклад %n"/>
+<l:template name="figure" text="Рисунок %n"/>
+<l:template name="part" text="Частина %n"/>
+<l:template name="procedure" text="Процедура %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="П и В %n"/>
+<l:template name="qandaentry" text="П %n"/>
+<l:template name="question" text="П %n"/>
+<l:template name="sect1" text="Параграф %n"/>
+<l:template name="sect2" text="Параграф %n"/>
+<l:template name="sect3" text="Параграф %n"/>
+<l:template name="sect4" text="Параграф %n"/>
+<l:template name="sect5" text="Параграф %n"/>
+<l:template name="section" text="Параграф %n"/>
+<l:template name="table" text="Таблиця %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Додаток %n, %t"/>
+<l:template name="bridgehead" text="Параграф %n, “%t”"/>
+<l:template name="chapter" text="Розділ %n, %t"/>
+<l:template name="equation" text="Формула %n, “%t”"/>
+<l:template name="example" text="Приклад %n, “%t”"/>
+<l:template name="figure" text="Рисунок %n, “%t”"/>
+<l:template name="part" text="Частина %n, “%t”"/>
+<l:template name="procedure" text="Процедура %n, “%t”"/>
+<l:template name="productionset" text="Production %n, “%t”"/>
+<l:template name="qandadiv" text="П и В %n, “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="sect1" text="Параграф %n, “%t”"/>
+<l:template name="sect2" text="Параграф %n, “%t”"/>
+<l:template name="sect3" text="Параграф %n, “%t”"/>
+<l:template name="sect4" text="Параграф %n, “%t”"/>
+<l:template name="sect5" text="Параграф %n, “%t”"/>
+<l:template name="section" text="Параграф %n, “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+<l:template name="table" text="Таблиця %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" "/>
+<l:template name="seplast" text=". "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Див. %t"/>
+<l:template name="seealso" text="Див. також %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Аудиторія: "/>
+<l:template name="MsgLevel" text="Рівень: "/>
+<l:template name="MsgOrig" text="Джерело: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0422 Ukrainian"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/utility.xml b/docs/xsl-generic/common/utility.xml
new file mode 100644
index 00000000..ead9419e
--- /dev/null
+++ b/docs/xsl-generic/common/utility.xml
@@ -0,0 +1,259 @@
+<?xml version="1.0"?>
+
+<reference xml:id="utility">
+ <info>
+ <title>Common » Utility Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $
+ </releaseinfo>
+ </info>
+
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+
+<para>This is technical reference documentation for the
+ miscellaneous utility templates in the DocBook XSL
+ Stylesheets.</para>
+
+ <note>
+
+<para>These templates are defined in a separate file from the set
+ of “common” templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+
+
+<para>The utility templates don’t import or include any DocBook
+ XSL stylesheet parameters, so the utility templates can be used
+ without importing the whole set of parameters.</para>
+
+ </note>
+
+<para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+
+ </partintro>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.log.message">
+<refnamediv>
+<refname>log.message</refname>
+<refpurpose>Logs/emits formatted notes and warnings</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="log.message"&gt;
+&lt;xsl:param name="level"/&gt;
+&lt;xsl:param name="source"/&gt;
+&lt;xsl:param name="context-desc"/&gt;
+&lt;xsl:param name="context-desc-field-length"&gt;12&lt;/xsl:param&gt;
+&lt;xsl:param name="context-desc-padded"&gt;
+ &lt;xsl:if test="not($context-desc = '')"&gt;
+ &lt;xsl:call-template name="pad-string"&gt;
+ &lt;xsl:with-param name="leftRight"&gt;right&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="padVar" select="substring($context-desc, 1, $context-desc-field-length)"/&gt;
+ &lt;xsl:with-param name="length" select="$context-desc-field-length"/&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:if&gt;
+ &lt;/xsl:param&gt;
+&lt;xsl:param name="message"/&gt;
+&lt;xsl:param name="message-field-length" select="45"/&gt;
+&lt;xsl:param name="message-padded"&gt;
+ &lt;xsl:variable name="spaces-for-blank-level"&gt;
+ &lt;!-- * if the level field is blank, we'll need to pad out --&gt;
+ &lt;!-- * the message field with spaces to compensate --&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$level = ''"&gt;
+ &lt;xsl:value-of select="4 + 2"/&gt;
+ &lt;!-- * 4 = hard-coded length of comment text ("Note" or "Warn") --&gt;
+ &lt;!-- * + 2 = length of colon-plus-space separator ": " --&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="0"/&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:variable name="spaces-for-blank-context-desc"&gt;
+ &lt;!-- * if the context-description field is blank, we'll need --&gt;
+ &lt;!-- * to pad out the message field with spaces to compensate --&gt;
+ &lt;xsl:choose&gt;
+ &lt;xsl:when test="$context-desc = ''"&gt;
+ &lt;xsl:value-of select="$context-desc-field-length + 2"/&gt;
+ &lt;!-- * + 2 = length of colon-plus-space separator ": " --&gt;
+ &lt;/xsl:when&gt;
+ &lt;xsl:otherwise&gt;
+ &lt;xsl:value-of select="0"/&gt;
+ &lt;/xsl:otherwise&gt;
+ &lt;/xsl:choose&gt;
+ &lt;/xsl:variable&gt;
+ &lt;xsl:variable name="extra-spaces" select="$spaces-for-blank-level + $spaces-for-blank-context-desc"/&gt;
+ &lt;xsl:call-template name="pad-string"&gt;
+ &lt;xsl:with-param name="leftRight"&gt;right&lt;/xsl:with-param&gt;
+ &lt;xsl:with-param name="padVar" select="substring($message, 1, ($message-field-length + $extra-spaces))"/&gt;
+ &lt;xsl:with-param name="length" select="$message-field-length + $extra-spaces"/&gt;
+ &lt;/xsl:call-template&gt;
+ &lt;/xsl:param&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The <function>log.message</function> template is a utility
+ template for logging/emitting formatted messages – that is,
+ notes and warnings, along with a given log “level” and an
+ identifier for the “source” that the message relates to.</para>
+
+ </refsect1><refsect1><title>Parameters</title>
+
+<variablelist>
+ <varlistentry><term>level</term>
+ <listitem>
+
+<para>Text to log/emit in the message-level field to
+ indicate the message level
+ (<literal>Note</literal> or
+ <literal>Warning</literal>)</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>source</term>
+ <listitem>
+
+<para>Text to log/emit in the source field to identify the
+ “source” to which the notification/warning relates.
+ This can be any arbitrary string, but because the
+ message lacks line and column numbers to identify the
+ exact part of the source document to which it
+ relates, the intention is that the value you pass
+ into the <literal>source</literal> parameter should
+ give the user some way to identify the portion of
+ their source document on which to take potentially
+ take action in response to the log message (for
+ example, to edit, change, or add content).</para>
+
+
+<para>So the <literal>source</literal> value should be,
+ for example, an ID, book/chapter/article title, title
+ of some formal object, or even a string giving an
+ XPath expression.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc</term>
+ <listitem>
+
+<para>Text to log/emit in the context-description field to
+ describe the context for the message.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc-field-length</term>
+ <listitem>
+
+<para>Specifies length of the context-description field
+ (in characters); default is 12</para>
+
+
+<para>If the text specified by the
+ <literal>context-desc</literal> parameter is longer
+ than the number of characters specified in
+ <literal>context-desc-field-length</literal>, it is
+ truncated to <literal>context-desc-field-length</literal>
+ (12 characters by default).</para>
+
+
+<para>If the specified text is shorter than
+ <literal>context-desc-field-length</literal>,
+ it is right-padded out to
+ <literal>context-desc-field-length</literal> (12 by
+ default).</para>
+
+
+<para>If no value has been specified for the
+ <literal>context-desc</literal> parameter, the field is
+ left empty and the text of the log message begins with
+ the value of the <literal>message</literal>
+ parameter.</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message</term>
+ <listitem>
+
+<para>Text to log/emit in the actual message field</para>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message-field-length</term>
+ <listitem>
+
+<para>Specifies length of the message
+ field (in characters); default is 45</para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Outputs a message (generally, to standard error).</para>
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.get.doc.title">
+<refnamediv>
+<refname>get.doc.title</refname>
+<refpurpose>Gets a title from the current document</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="get.doc.title"/&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>The <function>get.doc.title</function> template is a
+ utility template for returning the first title found in the
+ current document.</para>
+
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a string containing some identifying title for the
+ current document .</para>
+</refsect1></refentry>
+
+<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.pad-string">
+<refnamediv>
+<refname>pad-string</refname>
+<refpurpose>Right-pads or left-pads a string out to a certain length</refpurpose>
+</refnamediv>
+<refsynopsisdiv>
+<synopsis>&lt;xsl:template name="pad-string"&gt;
+&lt;xsl:param name="padChar" select="' '"/&gt;
+&lt;xsl:param name="leftRight"&gt;left&lt;/xsl:param&gt;
+&lt;xsl:param name="padVar"/&gt;
+&lt;xsl:param name="length"/&gt;
+ ...
+&lt;/xsl:template&gt;</synopsis>
+</refsynopsisdiv>
+<refsect1><title/>
+
+<para>This function takes string <parameter>padVar</parameter> and
+ pads it out in the direction <parameter>rightLeft</parameter> to
+ the string-length <parameter>length</parameter>, using string
+ <parameter>padChar</parameter> (a space character by default) as
+ the padding string (note that <parameter>padChar</parameter> can
+ be a string; it is not limited to just being a single
+ character).</para>
+
+ <note>
+
+<para>This function began as a copy of Nate Austin's
+ <function>prepend-pad</function> function in the <link xlink:href="http://www.dpawson.co.uk/xsl/sect2/padding.html">Padding
+ Content</link> section of Dave Pawson's <link xlink:href="http://www.dpawson.co.uk/xsl/index.html">XSLT
+ FAQ</link>.</para>
+
+ </note>
+ </refsect1><refsect1><title>Returns</title>
+
+<para>Returns a (padded) string.</para>
+</refsect1></refentry>
+</reference>
+
diff --git a/docs/xsl-generic/common/utility.xsl b/docs/xsl-generic/common/utility.xsl
new file mode 100644
index 00000000..37092b7c
--- /dev/null
+++ b/docs/xsl-generic/common/utility.xsl
@@ -0,0 +1,290 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc dyn saxon"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+<doc:reference xmlns="" xml:id="utility">
+ <info>
+ <title>Common » Utility Template Reference</title>
+ <releaseinfo role="meta">
+ $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $
+ </releaseinfo>
+ </info>
+ <!-- * yes, partintro is a valid child of a reference... -->
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is technical reference documentation for the
+ miscellaneous utility templates in the DocBook XSL
+ Stylesheets.</para>
+ <note>
+ <para>These templates are defined in a separate file from the set
+ of “common” templates because some of the common templates
+ reference DocBook XSL stylesheet parameters, requiring the
+ entire set of parameters to be imported/included in any
+ stylesheet that imports/includes the common templates.</para>
+ <para>The utility templates don’t import or include any DocBook
+ XSL stylesheet parameters, so the utility templates can be used
+ without importing the whole set of parameters.</para>
+ </note>
+ <para>This is not intended to be user documentation. It is
+ provided for developers writing customization layers for the
+ stylesheets.</para>
+ </partintro>
+</doc:reference>
+
+<!-- ====================================================================== -->
+
+<doc:template name="log.message" xmlns="">
+ <refpurpose>Logs/emits formatted notes and warnings</refpurpose>
+
+ <refdescription id="log.message-desc">
+ <para>The <function>log.message</function> template is a utility
+ template for logging/emitting formatted messages&#xa0;– that is,
+ notes and warnings, along with a given log “level” and an
+ identifier for the “source” that the message relates to.</para>
+ </refdescription>
+
+ <refparameter id="log.message-params">
+ <variablelist>
+ <varlistentry><term>level</term>
+ <listitem>
+ <para>Text to log/emit in the message-level field to
+ indicate the message level
+ (<literal>Note</literal> or
+ <literal>Warning</literal>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>source</term>
+ <listitem>
+ <para>Text to log/emit in the source field to identify the
+ “source” to which the notification/warning relates.
+ This can be any arbitrary string, but because the
+ message lacks line and column numbers to identify the
+ exact part of the source document to which it
+ relates, the intention is that the value you pass
+ into the <literal>source</literal> parameter should
+ give the user some way to identify the portion of
+ their source document on which to take potentially
+ take action in response to the log message (for
+ example, to edit, change, or add content).</para>
+ <para>So the <literal>source</literal> value should be,
+ for example, an ID, book/chapter/article title, title
+ of some formal object, or even a string giving an
+ XPath expression.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc</term>
+ <listitem>
+ <para>Text to log/emit in the context-description field to
+ describe the context for the message.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>context-desc-field-length</term>
+ <listitem>
+ <para>Specifies length of the context-description field
+ (in characters); default is 12</para>
+ <para>If the text specified by the
+ <literal>context-desc</literal> parameter is longer
+ than the number of characters specified in
+ <literal>context-desc-field-length</literal>, it is
+ truncated to <literal>context-desc-field-length</literal>
+ (12 characters by default).</para>
+ <para>If the specified text is shorter than
+ <literal>context-desc-field-length</literal>,
+ it is right-padded out to
+ <literal>context-desc-field-length</literal> (12 by
+ default).</para>
+ <para>If no value has been specified for the
+ <literal>context-desc</literal> parameter, the field is
+ left empty and the text of the log message begins with
+ the value of the <literal>message</literal>
+ parameter.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message</term>
+ <listitem>
+ <para>Text to log/emit in the actual message field</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>message-field-length</term>
+ <listitem>
+ <para>Specifies length of the message
+ field (in characters); default is 45</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn id="log.message-returns">
+ <para>Outputs a message (generally, to standard error).</para></refreturn>
+</doc:template>
+<xsl:template name="log.message">
+ <xsl:param name="level"/>
+ <xsl:param name="source"/>
+ <xsl:param name="context-desc"/>
+ <xsl:param name="context-desc-field-length">12</xsl:param>
+ <xsl:param name="context-desc-padded">
+ <xsl:if test="not($context-desc = '')">
+ <xsl:call-template name="pad-string">
+ <xsl:with-param name="leftRight">right</xsl:with-param>
+ <xsl:with-param name="padVar"
+ select="substring($context-desc, 1, $context-desc-field-length)"/>
+ <xsl:with-param name="length" select="$context-desc-field-length"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="message"/>
+ <xsl:param name="message-field-length" select="45"/>
+ <xsl:param name="message-padded">
+ <xsl:variable name="spaces-for-blank-level">
+ <!-- * if the level field is blank, we'll need to pad out -->
+ <!-- * the message field with spaces to compensate -->
+ <xsl:choose>
+ <xsl:when test="$level = ''">
+ <xsl:value-of select="4 + 2"/>
+ <!-- * 4 = hard-coded length of comment text ("Note" or "Warn") -->
+ <!-- * + 2 = length of colon-plus-space separator ": " -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="spaces-for-blank-context-desc">
+ <!-- * if the context-description field is blank, we'll need -->
+ <!-- * to pad out the message field with spaces to compensate -->
+ <xsl:choose>
+ <xsl:when test="$context-desc = ''">
+ <xsl:value-of select="$context-desc-field-length + 2"/>
+ <!-- * + 2 = length of colon-plus-space separator ": " -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="extra-spaces"
+ select="$spaces-for-blank-level + $spaces-for-blank-context-desc"/>
+ <xsl:call-template name="pad-string">
+ <xsl:with-param name="leftRight">right</xsl:with-param>
+ <xsl:with-param name="padVar"
+ select="substring($message, 1, ($message-field-length + $extra-spaces))"/>
+ <xsl:with-param name="length"
+ select="$message-field-length + $extra-spaces"/>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- * emit the actual log message -->
+ <xsl:message>
+ <xsl:if test="not($level = '')">
+ <xsl:value-of select="$level"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:if test="not($context-desc = '')">
+ <xsl:value-of select="$context-desc-padded"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$message-padded"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$source"/>
+ </xsl:message>
+</xsl:template>
+
+<!-- ===================================== -->
+<doc:template name="get.doc.title" xmlns="">
+ <refpurpose>Gets a title from the current document</refpurpose>
+ <refdescription id="get.doc.title-desc">
+ <para>The <function>get.doc.title</function> template is a
+ utility template for returning the first title found in the
+ current document.</para>
+ </refdescription>
+ <refreturn id="get.doc.title-returns">
+ <para>Returns a string containing some identifying title for the
+ current document .</para></refreturn>
+</doc:template>
+<xsl:template name="get.doc.title">
+ <xsl:choose>
+ <xsl:when test="//*[local-name() = 'title'
+ or local-name() = 'refname']">
+ <xsl:value-of select="//*[local-name() = 'title'
+ or local-name() = 'refname'][1]"/>
+ </xsl:when>
+ <xsl:when test="substring(local-name(*[1]),
+ string-length(local-name(*[1])-3) = 'info')
+ and *[1]/*[local-name() = 'title']">
+ <xsl:value-of select="*[1]/*[local-name() = 'title'][1]"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ===================================== -->
+<doc:template name="pad-string" xmlns="">
+ <refpurpose>Right-pads or left-pads a string out to a certain length</refpurpose>
+ <refdescription id="pad-string-desc">
+ <para>This function takes string <parameter>padVar</parameter> and
+ pads it out in the direction <parameter>rightLeft</parameter> to
+ the string-length <parameter>length</parameter>, using string
+ <parameter>padChar</parameter> (a space character by default) as
+ the padding string (note that <parameter>padChar</parameter> can
+ be a string; it is not limited to just being a single
+ character).</para>
+ <note>
+ <para>This function began as a copy of Nate Austin's
+ <function>prepend-pad</function> function in the <link
+ xlink:href="http://www.dpawson.co.uk/xsl/sect2/padding.html" >Padding
+ Content</link> section of Dave Pawson's <link
+ xlink:href="http://www.dpawson.co.uk/xsl/index.html" >XSLT
+ FAQ</link>.</para>
+ </note>
+ </refdescription>
+ <refreturn id="pad-string-returns">
+ <para>Returns a (padded) string.</para></refreturn>
+</doc:template>
+<xsl:template name="pad-string">
+ <!-- * recursive template to right/left pad the value with -->
+ <!-- * whatever padChar is passed in -->
+ <xsl:param name="padChar" select="' '"/>
+ <xsl:param name="leftRight">left</xsl:param>
+ <xsl:param name="padVar"/>
+ <xsl:param name="length"/>
+ <xsl:choose>
+ <xsl:when test="string-length($padVar) &lt; $length">
+ <xsl:call-template name="pad-string">
+ <xsl:with-param name="padChar" select="$padChar"/>
+ <xsl:with-param name="leftRight" select="$leftRight"/>
+ <xsl:with-param name="padVar">
+ <xsl:choose>
+ <!-- * determine whether string should be -->
+ <!-- * right- or left-padded -->
+ <xsl:when test="$leftRight = 'left'">
+ <!-- * pad it to left -->
+ <xsl:value-of select="concat($padChar,$padVar)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, right-pad the string -->
+ <xsl:value-of select="concat($padVar,$padChar)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="length" select="$length"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of
+ select="substring($padVar,string-length($padVar) - $length + 1)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/common/vi.xml b/docs/xsl-generic/common/vi.xml
new file mode 100644
index 00000000..9363b8d2
--- /dev/null
+++ b/docs/xsl-generic/common/vi.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="vi" english-language-name="Vietnamese">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/vi.xml -->
+<!-- * -->
+<!-- * E-mail the edited vi.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Tổng quan"/>
+<l:gentext key="abstract" text="Tổng quan"/>
+<l:gentext key="Answer" text="Đ:"/>
+<l:gentext key="answer" text="Đ:"/>
+<l:gentext key="Appendix" text="Phụ lục"/>
+<l:gentext key="appendix" text="phụ lục"/>
+<l:gentext key="Article" text="Bài viết"/>
+<l:gentext key="article" text="Bài viết"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Thư mục"/>
+<l:gentext key="bibliography" text="Thư mục"/>
+<l:gentext key="Book" text="Sách"/>
+<l:gentext key="book" text="Sách"/>
+<l:gentext key="CAUTION" text="CẨN THẬN"/>
+<l:gentext key="Caution" text="Cẩn thận"/>
+<l:gentext key="caution" text="Cẩn thận"/>
+<l:gentext key="Chapter" text="Chương"/>
+<l:gentext key="chapter" text="chương"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="Bản quyền"/>
+<l:gentext key="copyright" text="Bản quyền"/>
+<l:gentext key="Dedication" text="Tặng"/>
+<l:gentext key="dedication" text="Tặng"/>
+<l:gentext key="Edition" text="Edition"/>
+<l:gentext key="edition" text="Edition"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Phương trình"/>
+<l:gentext key="equation" text="Phương trình"/>
+<l:gentext key="Example" text="Ví dụ"/>
+<l:gentext key="example" text="Ví dụ"/>
+<l:gentext key="Figure" text="Hình"/>
+<l:gentext key="figure" text="Hình"/>
+<l:gentext key="Glossary" text="Thuật ngữ"/>
+<l:gentext key="glossary" text="Thuật ngữ"/>
+<l:gentext key="GlossSee" text="Xem"/>
+<l:gentext key="glosssee" text="Xem"/>
+<l:gentext key="GlossSeeAlso" text="Xem thêm"/>
+<l:gentext key="glossseealso" text="Xem thêm"/>
+<l:gentext key="IMPORTANT" text="QUAN TRỌNG"/>
+<l:gentext key="important" text="Quan trọng"/>
+<l:gentext key="Important" text="Quan trọng"/>
+<l:gentext key="Index" text="Chỉ mục"/>
+<l:gentext key="index" text="Chỉ mục"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="Legal Notice"/>
+<l:gentext key="legalnotice" text="Legal Notice"/>
+<l:gentext key="MsgAud" text="Đọc giả"/>
+<l:gentext key="msgaud" text="Đọc giả"/>
+<l:gentext key="MsgLevel" text="Cấp"/>
+<l:gentext key="msglevel" text="Cấp"/>
+<l:gentext key="MsgOrig" text="Gốc"/>
+<l:gentext key="msgorig" text="Gốc"/>
+<l:gentext key="NOTE" text="GHI CHÚ"/>
+<l:gentext key="Note" text="Ghi chú"/>
+<l:gentext key="note" text="Ghi chú"/>
+<l:gentext key="Part" text="Phần"/>
+<l:gentext key="part" text="Phần"/>
+<l:gentext key="Preface" text="Mở đầu"/>
+<l:gentext key="preface" text="Mở đầu"/>
+<l:gentext key="Procedure" text="Thủ tục"/>
+<l:gentext key="procedure" text="Thủ tục"/>
+<l:gentext key="ProductionSet" text="Sản phẩm"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Xuất bản"/>
+<l:gentext key="published" text="Xuất bản"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="H và Đ"/>
+<l:gentext key="qandadiv" text="H và Đ"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="H:"/>
+<l:gentext key="question" text="H:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Tham khảo"/>
+<l:gentext key="reference" text="Tham khảo"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Tên"/>
+<l:gentext key="refname" text="Tên"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Tóm tắt"/>
+<l:gentext key="refsynopsisdiv" text="Tóm tắt"/>
+<l:gentext key="RevHistory" text="Revision History"/>
+<l:gentext key="revhistory" text="Revision History"/>
+<l:gentext key="revision" text="Bản hiệu chỉnh"/>
+<l:gentext key="Revision" text="Bản hiệu chỉnh"/>
+<l:gentext key="sect1" text="Phần"/>
+<l:gentext key="sect2" text="Phần"/>
+<l:gentext key="sect3" text="Phần"/>
+<l:gentext key="sect4" text="Phần"/>
+<l:gentext key="sect5" text="Phần"/>
+<l:gentext key="section" text="Phần"/>
+<l:gentext key="Section" text="Phần"/>
+<l:gentext key="see" text="xem"/>
+<l:gentext key="See" text="See" lang="en"/>
+<l:gentext key="seealso" text="xem thêm"/>
+<l:gentext key="Seealso" text="See also" lang="en"/>
+<l:gentext key="SeeAlso" text="See Also" lang="en"/>
+<l:gentext key="set" text="Đặt"/>
+<l:gentext key="Set" text="Đặt"/>
+<l:gentext key="setindex" text="Đặt chỉ mục"/>
+<l:gentext key="SetIndex" text="Đặt chỉ mục"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="thanh bên"/>
+<l:gentext key="step" text="bước"/>
+<l:gentext key="Step" text="Bước"/>
+<l:gentext key="table" text="Bảng"/>
+<l:gentext key="Table" text="Bảng"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Mẹo"/>
+<l:gentext key="TIP" text="MẸO"/>
+<l:gentext key="Tip" text="Mẹo"/>
+<l:gentext key="Warning" text="Cảnh báo"/>
+<l:gentext key="warning" text="Cảnh báo"/>
+<l:gentext key="WARNING" text="CẢNH BÁO"/>
+<l:gentext key="and" text="và"/>
+<l:gentext key="by" text="bởi"/>
+<l:gentext key="Edited" text="Được biên soạn"/>
+<l:gentext key="edited" text="Được biên soạn"/>
+<l:gentext key="Editedby" text="Được biên soạn bởi"/>
+<l:gentext key="editedby" text="Được biên soạn bởi"/>
+<l:gentext key="in" text="trong"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="phần tử không có"/>
+<l:gentext key="notes" text="Ghi chú"/>
+<l:gentext key="Notes" text="Ghi chú"/>
+<l:gentext key="Pgs" text="Pgs."/>
+<l:gentext key="pgs" text="Pgs."/>
+<l:gentext key="Revisedby" text="Hiệu chỉnh bởi: "/>
+<l:gentext key="revisedby" text="Hiệu chỉnh bởi: "/>
+<l:gentext key="TableNotes" text="Ghi chú"/>
+<l:gentext key="tablenotes" text="Ghi chú"/>
+<l:gentext key="TableofContents" text="Mục lục"/>
+<l:gentext key="tableofcontents" text="Mục lục"/>
+<l:gentext key="unexpectedelementname" text="Tên phần tử không đúng"/>
+<l:gentext key="unsupported" text="không hỗ trợ"/>
+<l:gentext key="xrefto" text="xref tới"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Danh sách Phương trình"/>
+<l:gentext key="ListofEquations" text="Danh sách Phương trình"/>
+<l:gentext key="ListofExamples" text="Danh sách Ví dụ"/>
+<l:gentext key="listofexamples" text="Danh sách Ví dụ"/>
+<l:gentext key="ListofFigures" text="Danh sách Hình"/>
+<l:gentext key="listoffigures" text="Danh sách Hình"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Danh sách Bảng"/>
+<l:gentext key="ListofTables" text="Danh sách Bảng"/>
+<l:gentext key="ListofUnknown" text="Danh sách Lạ"/>
+<l:gentext key="listofunknown" text="Danh sách Lạ"/>
+<l:gentext key="nav-home" text="Đầu"/>
+<l:gentext key="nav-next" text="Kế tiếp"/>
+<l:gentext key="nav-next-sibling" text="Tới nhanh"/>
+<l:gentext key="nav-prev" text="Trước đó"/>
+<l:gentext key="nav-prev-sibling" text="Lùi nhanh"/>
+<l:gentext key="nav-up" text="Lên"/>
+<l:gentext key="nav-toc" text="Mục lục"/>
+<l:gentext key="Draft" text="Bản thảo"/>
+<l:gentext key="above" text="trên"/>
+<l:gentext key="below" text="dưới"/>
+<l:gentext key="sectioncalled" text="phần"/>
+<l:gentext key="index symbols" text="Ký hiệu"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="last-first"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Phụ lục %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Chương %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Phương trình %n. %t"/>
+<l:template name="example" text="Ví dụ %n. %t"/>
+<l:template name="figure" text="Hình %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Phần %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Thủ tục %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Sản phẩm %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Bảng %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Phụ lục %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Chương %n. %t"/>
+<l:template name="part" text="Phần %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="H: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="H: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="phần “%t”"/>
+<l:template name="refsection" text="phần “%t”"/>
+<l:template name="refsect1" text="phần “%t”"/>
+<l:template name="refsect2" text="phần “%t”"/>
+<l:template name="refsect3" text="phần “%t”"/>
+<l:template name="sect1" text="phần “%t”"/>
+<l:template name="sect2" text="phần “%t”"/>
+<l:template name="sect3" text="phần “%t”"/>
+<l:template name="sect4" text="phần “%t”"/>
+<l:template name="sect5" text="phần “%t”"/>
+<l:template name="section" text="phần “%t”"/>
+<l:template name="simplesect" text="phần “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="Đ: %n"/>
+<l:template name="appendix" text="Phụ lục %n"/>
+<l:template name="bridgehead" text="Phần %n"/>
+<l:template name="chapter" text="Chương %n"/>
+<l:template name="equation" text="Phương trình %n"/>
+<l:template name="example" text="Ví dụ %n"/>
+<l:template name="figure" text="Hình %n"/>
+<l:template name="part" text="Phần %n"/>
+<l:template name="procedure" text="Thủ tục %n"/>
+<l:template name="productionset" text="Sản phẩm %n"/>
+<l:template name="qandadiv" text="H và Đ %n"/>
+<l:template name="qandaentry" text="H: %n"/>
+<l:template name="question" text="H: %n"/>
+<l:template name="sect1" text="Phần %n"/>
+<l:template name="sect2" text="Phần %n"/>
+<l:template name="sect3" text="Phần %n"/>
+<l:template name="sect4" text="Phần %n"/>
+<l:template name="sect5" text="Phần %n"/>
+<l:template name="section" text="Phần %n"/>
+<l:template name="table" text="Bảng %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Phụ lục %n, %t"/>
+<l:template name="bridgehead" text="Phần %n, “%t”"/>
+<l:template name="chapter" text="Chương %n, %t"/>
+<l:template name="equation" text="Phương trình %n, “%t”"/>
+<l:template name="example" text="Ví dụ %n, “%t”"/>
+<l:template name="figure" text="Hình %n, “%t”"/>
+<l:template name="part" text="Phần %n, “%t”"/>
+<l:template name="procedure" text="Thủ tục %n, “%t”"/>
+<l:template name="productionset" text="Sản phẩm %n, “%t”"/>
+<l:template name="qandadiv" text="H và Đ %n, “%t”"/>
+<l:template name="refsect1" text="phần “%t”"/>
+<l:template name="refsect2" text="phần “%t”"/>
+<l:template name="refsect3" text="phần “%t”"/>
+<l:template name="refsection" text="phần “%t”"/>
+<l:template name="sect1" text="Phần %n, “%t”"/>
+<l:template name="sect2" text="Phần %n, “%t”"/>
+<l:template name="sect3" text="Phần %n, “%t”"/>
+<l:template name="sect4" text="Phần %n, “%t”"/>
+<l:template name="sect5" text="Phần %n, “%t”"/>
+<l:template name="section" text="Phần %n, “%t”"/>
+<l:template name="simplesect" text="phần “%t”"/>
+<l:template name="table" text="Bảng %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" và "/>
+<l:template name="seplast" text=", và "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Xem %t"/>
+<l:template name="seealso" text="Xem thêm %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Đọc giả: "/>
+<l:template name="MsgLevel" text="Cấp: "/>
+<l:template name="MsgOrig" text="Gốc: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x042a Vietnamese"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/xh.xml b/docs/xsl-generic/common/xh.xml
new file mode 100644
index 00000000..8d10e300
--- /dev/null
+++ b/docs/xsl-generic/common/xh.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="xh" english-language-name="Xhosa">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/xh.xml -->
+<!-- * -->
+<!-- * E-mail the edited xh.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="Isiqalo"/>
+<l:gentext key="abstract" text="Isiqalo"/>
+<l:gentext key="Answer" text="I:"/>
+<l:gentext key="answer" text="I:"/>
+<l:gentext key="Appendix" text="Isivalo"/>
+<l:gentext key="appendix" text="isivalo"/>
+<l:gentext key="Article" text="Umba"/>
+<l:gentext key="article" text="Umba"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="Ezobunzululwazi"/>
+<l:gentext key="bibliography" text="Ezobunzululwazi"/>
+<l:gentext key="Book" text="Incwadi"/>
+<l:gentext key="book" text="Incwadi"/>
+<l:gentext key="CAUTION" text="ISILUMKISO"/>
+<l:gentext key="Caution" text="Isilumkiso"/>
+<l:gentext key="caution" text="Isilumkiso"/>
+<l:gentext key="Chapter" text="Isiqendu"/>
+<l:gentext key="chapter" text="isiqendu"/>
+<l:gentext key="Colophon" text="Ikolophon"/>
+<l:gentext key="colophon" text="Ikolophon"/>
+<l:gentext key="Copyright" text="Ushicilelo olusemthethweni"/>
+<l:gentext key="copyright" text="Ushicilelo olusemthethweni"/>
+<l:gentext key="Dedication" text="Ulwaziso"/>
+<l:gentext key="dedication" text="Ulwaziso"/>
+<l:gentext key="Edition" text="Uhlelo"/>
+<l:gentext key="edition" text="Uhlelo"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="Ulinganiselo"/>
+<l:gentext key="equation" text="Ulinganiselo"/>
+<l:gentext key="Example" text="Umzekelo"/>
+<l:gentext key="example" text="Umzekelo"/>
+<l:gentext key="Figure" text="Ulungu"/>
+<l:gentext key="figure" text="Ulungu"/>
+<l:gentext key="Glossary" text="Inkcazelo yamagama"/>
+<l:gentext key="glossary" text="Inkcazelo yamagama"/>
+<l:gentext key="GlossSee" text="Bona"/>
+<l:gentext key="glosssee" text="Bona"/>
+<l:gentext key="GlossSeeAlso" text="Bona Kwakhona"/>
+<l:gentext key="glossseealso" text="Bona Kwakhona"/>
+<l:gentext key="IMPORTANT" text="IBALULEKILE"/>
+<l:gentext key="important" text="Ibalulekile"/>
+<l:gentext key="Important" text="Ibalulekile"/>
+<l:gentext key="Index" text="Isalathiso"/>
+<l:gentext key="index" text="Isalathiso"/>
+<l:gentext key="ISBN" text="iISBN"/>
+<l:gentext key="isbn" text="iISBN"/>
+<l:gentext key="LegalNotice" text="Isaziso Esesimthethweni"/>
+<l:gentext key="legalnotice" text="Isaziso Esesimthethweni"/>
+<l:gentext key="MsgAud" text="Ababhali"/>
+<l:gentext key="msgaud" text="Ababhali"/>
+<l:gentext key="MsgLevel" text="Umphakamo"/>
+<l:gentext key="msglevel" text="Umphakamo"/>
+<l:gentext key="MsgOrig" text="Uqobo"/>
+<l:gentext key="msgorig" text="Uqobo"/>
+<l:gentext key="NOTE" text="QAPHELA"/>
+<l:gentext key="Note" text="Qaphela"/>
+<l:gentext key="note" text="Qaphela"/>
+<l:gentext key="Part" text="Inxenye"/>
+<l:gentext key="part" text="Inxenye"/>
+<l:gentext key="Preface" text="Isihloko"/>
+<l:gentext key="preface" text="Isihloko"/>
+<l:gentext key="Procedure" text="Inkqubo"/>
+<l:gentext key="procedure" text="Inkqubo"/>
+<l:gentext key="ProductionSet" text="Imveliso"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="Ipapashwe"/>
+<l:gentext key="published" text="Ipapashwe"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="U no I"/>
+<l:gentext key="qandadiv" text="U no I"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="U:"/>
+<l:gentext key="question" text="U:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="Uthelekiso"/>
+<l:gentext key="reference" text="Uthelekiso"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="Igama lothelekiso"/>
+<l:gentext key="refname" text="Igama lothelekiso"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="Isinopsisi"/>
+<l:gentext key="refsynopsisdiv" text="Isinopsisi"/>
+<l:gentext key="RevHistory" text="Imbali yophindo"/>
+<l:gentext key="revhistory" text="Imbali yophindo"/>
+<l:gentext key="revision" text="Iphindo"/>
+<l:gentext key="Revision" text="Iphindo"/>
+<l:gentext key="sect1" text="Icandelo"/>
+<l:gentext key="sect2" text="Icandelo"/>
+<l:gentext key="sect3" text="Icandelo"/>
+<l:gentext key="sect4" text="Icandelo"/>
+<l:gentext key="sect5" text="Icandelo"/>
+<l:gentext key="section" text="Icandelo"/>
+<l:gentext key="Section" text="Icandelo"/>
+<l:gentext key="see" text="Bona"/>
+<l:gentext key="See" text="Bona"/>
+<l:gentext key="seealso" text="Bona Kwakhona"/>
+<l:gentext key="Seealso" text="Bona Kwakhona"/>
+<l:gentext key="SeeAlso" text="Bona Kwakhona"/>
+<l:gentext key="set" text="Cwangcisa"/>
+<l:gentext key="Set" text="Cwangcisa"/>
+<l:gentext key="setindex" text="Cwangcisa Isalathiso"/>
+<l:gentext key="SetIndex" text="Cwangcisa Isalathiso"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="ibar esecaleni"/>
+<l:gentext key="step" text="inqwanqwa"/>
+<l:gentext key="Step" text="Inqwanqwa"/>
+<l:gentext key="table" text="Indlela Yokwenza Imigca"/>
+<l:gentext key="Table" text="Indlela Yokwenza Imigca"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="Incam"/>
+<l:gentext key="TIP" text="INCAM"/>
+<l:gentext key="Tip" text="Incam"/>
+<l:gentext key="Warning" text="Isilumkiso"/>
+<l:gentext key="warning" text="Isilumkiso"/>
+<l:gentext key="WARNING" text="ISILUMKISO"/>
+<l:gentext key="and" text="no"/>
+<l:gentext key="by" text="by"/>
+<l:gentext key="Edited" text="Ihleliwe"/>
+<l:gentext key="edited" text="Ihleliwe"/>
+<l:gentext key="Editedby" text="Ihlelwe"/>
+<l:gentext key="editedby" text="Ihlelwe"/>
+<l:gentext key="in" text="in"/>
+<l:gentext key="lastlistcomma" text=", "/>
+<l:gentext key="listcomma" text=", "/>
+<l:gentext key="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="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="Uluhlu Lemilinganiselo"/>
+<l:gentext key="ListofEquations" text="Uluhlu Lemilinganiselo"/>
+<l:gentext key="ListofExamples" text="Uluhlu Lemizekelo"/>
+<l:gentext key="listofexamples" text="Uluhlu Lemizekelo"/>
+<l:gentext key="ListofFigures" text="Uluhlu Lamalungu"/>
+<l:gentext key="listoffigures" text="Uluhlu Lamalungu"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="Uluhlu Lendlela Yokwenza Imigca"/>
+<l:gentext key="ListofTables" text="Uluhlu Lendlela Yokwenza Imigca"/>
+<l:gentext key="ListofUnknown" text="Uluhlu Lokungaziwayo"/>
+<l:gentext key="listofunknown" text="Uluhlu Lokungaziwayo"/>
+<l:gentext key="nav-home" text="Ikhaya"/>
+<l:gentext key="nav-next" text="Elandelayo"/>
+<l:gentext key="nav-next-sibling" text="Yisa Phambili"/>
+<l:gentext key="nav-prev" text="Edlulileyo"/>
+<l:gentext key="nav-prev-sibling" text="Yisa Emva"/>
+<l:gentext key="nav-up" text="Phezulu"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="Draft"/>
+<l:gentext key="above" text="above"/>
+<l:gentext key="below" text="below"/>
+<l:gentext key="sectioncalled" text="icandelo libizwa ngokuba"/>
+<l:gentext key="index symbols" text="Iimpawu"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="Isivalo %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="Isiqendu %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="Ulinganiselo %n. %t"/>
+<l:template name="example" text="Umzekelo %n. %t"/>
+<l:template name="figure" text="Ulungu %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="Inxenye %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="Inkqubo %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Imveliso %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="Indlela Yokwenza Imigca %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="Isivalo %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="Isiqendu %n. %t"/>
+<l:template name="part" text="Inxenye %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="U: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="U: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="refsection" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="refsect1" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="refsect2" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="refsect3" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="sect1" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="sect2" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="sect3" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="sect4" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="sect5" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="section" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="simplesect" text="icandelo libizwa ngokuba “%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="I: %n"/>
+<l:template name="appendix" text="Isivalo %n"/>
+<l:template name="bridgehead" text="Icandelo %n"/>
+<l:template name="chapter" text="Isiqendu %n"/>
+<l:template name="equation" text="Ulinganiselo %n"/>
+<l:template name="example" text="Umzekelo %n"/>
+<l:template name="figure" text="Ulungu %n"/>
+<l:template name="part" text="Inxenye %n"/>
+<l:template name="procedure" text="Inkqubo %n"/>
+<l:template name="productionset" text="Imveliso %n"/>
+<l:template name="qandadiv" text="U no I %n"/>
+<l:template name="qandaentry" text="U: %n"/>
+<l:template name="question" text="U: %n"/>
+<l:template name="sect1" text="Icandelo %n"/>
+<l:template name="sect2" text="Icandelo %n"/>
+<l:template name="sect3" text="Icandelo %n"/>
+<l:template name="sect4" text="Icandelo %n"/>
+<l:template name="sect5" text="Icandelo %n"/>
+<l:template name="section" text="Icandelo %n"/>
+<l:template name="table" text="Indlela Yokwenza Imigca %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="Isivalo %n, %t"/>
+<l:template name="bridgehead" text="Icandelo %n, “%t”"/>
+<l:template name="chapter" text="Isiqendu %n, %t"/>
+<l:template name="equation" text="Ulinganiselo %n, “%t”"/>
+<l:template name="example" text="Umzekelo %n, “%t”"/>
+<l:template name="figure" text="Ulungu %n, “%t”"/>
+<l:template name="part" text="Inxenye %n, “%t”"/>
+<l:template name="procedure" text="Inkqubo %n, “%t”"/>
+<l:template name="productionset" text="Imveliso %n, “%t”"/>
+<l:template name="qandadiv" text="U no I %n, “%t”"/>
+<l:template name="refsect1" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="refsect2" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="refsect3" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="refsection" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="sect1" text="Icandelo %n, “%t”"/>
+<l:template name="sect2" text="Icandelo %n, “%t”"/>
+<l:template name="sect3" text="Icandelo %n, “%t”"/>
+<l:template name="sect4" text="Icandelo %n, “%t”"/>
+<l:template name="sect5" text="Icandelo %n, “%t”"/>
+<l:template name="section" text="Icandelo %n, “%t”"/>
+<l:template name="simplesect" text="icandelo libizwa ngokuba “%t”"/>
+<l:template name="table" text="Indlela Yokwenza Imigca %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=" no "/>
+<l:template name="sep2" text=" no "/>
+<l:template name="seplast" text=" no "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="Bona %t"/>
+<l:template name="seealso" text="Bona Kwakhona %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="Ababhali: "/>
+<l:template name="MsgLevel" text="Umphakamo: "/>
+<l:template name="MsgOrig" text="Uqobo: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0434 Xhosa"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/zh_cn.xml b/docs/xsl-generic/common/zh_cn.xml
new file mode 100644
index 00000000..6a782fca
--- /dev/null
+++ b/docs/xsl-generic/common/zh_cn.xml
@@ -0,0 +1,654 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="zh_cn" english-language-name="Chinese Simplified">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/zh_cn.xml -->
+<!-- * -->
+<!-- * E-mail the edited zh_cn.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="摘要"/>
+<l:gentext key="abstract" text="摘要"/>
+<l:gentext key="Answer" text="答:"/>
+<l:gentext key="answer" text="答:"/>
+<l:gentext key="Appendix" text="附录"/>
+<l:gentext key="appendix" text="附录"/>
+<l:gentext key="Article" text="文章"/>
+<l:gentext key="article" text="文章"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="参考书目"/>
+<l:gentext key="bibliography" text="参考书目"/>
+<l:gentext key="Book" text="书"/>
+<l:gentext key="book" text="书"/>
+<l:gentext key="CAUTION" text="小心"/>
+<l:gentext key="Caution" text="小心"/>
+<l:gentext key="caution" text="小心"/>
+<l:gentext key="Chapter" text="章"/>
+<l:gentext key="chapter" text="章"/>
+<l:gentext key="Colophon" text="Colophon"/>
+<l:gentext key="colophon" text="Colophon"/>
+<l:gentext key="Copyright" text="版权"/>
+<l:gentext key="copyright" text="版权"/>
+<l:gentext key="Dedication" text="题词"/>
+<l:gentext key="dedication" text="题词"/>
+<l:gentext key="Edition" text="版"/>
+<l:gentext key="edition" text="版"/>
+<l:gentext key="Editor" text="编者"/>
+<l:gentext key="Equation" text="公式"/>
+<l:gentext key="equation" text="公式"/>
+<l:gentext key="Example" text="例"/>
+<l:gentext key="example" text="例"/>
+<l:gentext key="Figure" text="图"/>
+<l:gentext key="figure" text="图"/>
+<l:gentext key="Glossary" text="术语表"/>
+<l:gentext key="glossary" text="术语表"/>
+<l:gentext key="GlossSee" text="见"/>
+<l:gentext key="glosssee" text="见"/>
+<l:gentext key="GlossSeeAlso" text="参见"/>
+<l:gentext key="glossseealso" text="参见"/>
+<l:gentext key="IMPORTANT" text="重要"/>
+<l:gentext key="important" text="重要"/>
+<l:gentext key="Important" text="重要"/>
+<l:gentext key="Index" text="索引"/>
+<l:gentext key="index" text="索引"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="法律通告"/>
+<l:gentext key="legalnotice" text="法律通告"/>
+<l:gentext key="MsgAud" text="受众"/>
+<l:gentext key="msgaud" text="受众"/>
+<l:gentext key="MsgLevel" text="级别"/>
+<l:gentext key="msglevel" text="级别"/>
+<l:gentext key="MsgOrig" text="出处"/>
+<l:gentext key="msgorig" text="出处"/>
+<l:gentext key="NOTE" text="注意"/>
+<l:gentext key="Note" text="注意"/>
+<l:gentext key="note" text="注意"/>
+<l:gentext key="Part" text="部分"/>
+<l:gentext key="part" text="部分"/>
+<l:gentext key="Preface" text="前言"/>
+<l:gentext key="preface" text="前言"/>
+<l:gentext key="Procedure" text="过程"/>
+<l:gentext key="procedure" text="过程"/>
+<l:gentext key="ProductionSet" text="产品"/>
+<l:gentext key="PubDate" text="出版日期"/>
+<l:gentext key="pubdate" text="出版日期"/>
+<l:gentext key="Published" text="出版方"/>
+<l:gentext key="published" text="出版方"/>
+<l:gentext key="Publisher" text="出版者"/>
+<l:gentext key="Qandadiv" text="质保"/>
+<l:gentext key="qandadiv" text="质保"/>
+<l:gentext key="QandASet" text="常见问题"/>
+<l:gentext key="Question" text="问:"/>
+<l:gentext key="question" text="问:"/>
+<l:gentext key="RefEntry" text=""/>
+<l:gentext key="refentry" text=""/>
+<l:gentext key="Reference" text="参考"/>
+<l:gentext key="reference" text="参考"/>
+<l:gentext key="References" text="参考"/>
+<l:gentext key="RefName" text="名称"/>
+<l:gentext key="refname" text="名称"/>
+<l:gentext key="RefSection" text=""/>
+<l:gentext key="refsection" text=""/>
+<l:gentext key="RefSynopsisDiv" text="大纲"/>
+<l:gentext key="refsynopsisdiv" text="大纲"/>
+<l:gentext key="RevHistory" text="修订历史"/>
+<l:gentext key="revhistory" text="修订历史"/>
+<l:gentext key="revision" text="修订"/>
+<l:gentext key="Revision" text="修订"/>
+<l:gentext key="sect1" text="节"/>
+<l:gentext key="sect2" text="节"/>
+<l:gentext key="sect3" text="节"/>
+<l:gentext key="sect4" text="节"/>
+<l:gentext key="sect5" text="节"/>
+<l:gentext key="section" text="节"/>
+<l:gentext key="Section" text="节"/>
+<l:gentext key="see" text="见"/>
+<l:gentext key="See" text="见"/>
+<l:gentext key="seealso" text="参见"/>
+<l:gentext key="Seealso" text="参见"/>
+<l:gentext key="SeeAlso" text="参见"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Set Index"/>
+<l:gentext key="SetIndex" text="Set Index"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text="sidebar"/>
+<l:gentext key="step" text="步骤"/>
+<l:gentext key="Step" text="步骤"/>
+<l:gentext key="table" text="表"/>
+<l:gentext key="Table" text="表"/>
+<l:gentext key="task" text="任务"/>
+<l:gentext key="Task" text="任务"/>
+<l:gentext key="tip" text="提示"/>
+<l:gentext key="TIP" text="提示"/>
+<l:gentext key="Tip" text="提示"/>
+<l:gentext key="Warning" text="警告"/>
+<l:gentext key="warning" text="警告"/>
+<l:gentext key="WARNING" text="警告"/>
+<l:gentext key="and" text="和"/>
+<l:gentext key="by" text="由"/>
+<l:gentext key="Edited" text="编辑时间"/>
+<l:gentext key="edited" text="编辑时间"/>
+<l:gentext key="Editedby" text="编辑者"/>
+<l:gentext key="editedby" text="编辑者"/>
+<l:gentext key="in" text="于"/>
+<l:gentext key="lastlistcomma" text=""/>
+<l:gentext key="listcomma" text="、"/>
+<l:gentext key="nonexistantelement" text="不存在的元素"/>
+<l:gentext key="notes" text="备注"/>
+<l:gentext key="Notes" text="备注"/>
+<l:gentext key="Pgs" text="页"/>
+<l:gentext key="pgs" text="页"/>
+<l:gentext key="Revisedby" text="修订者:"/>
+<l:gentext key="revisedby" text="修订者:"/>
+<l:gentext key="TableNotes" text="表注"/>
+<l:gentext key="tablenotes" text="表注"/>
+<l:gentext key="TableofContents" text="目录"/>
+<l:gentext key="tableofcontents" text="目录"/>
+<l:gentext key="unexpectedelementname" text="未预期的名称"/>
+<l:gentext key="unsupported" text="不支持"/>
+<l:gentext key="xrefto" text="xref to"/>
+<l:gentext key="Authors" text="作者"/>
+<l:gentext key="copyeditor" text="版权编辑"/>
+<l:gentext key="graphicdesigner" text="美术编辑"/>
+<l:gentext key="productioneditor" text="产品编辑"/>
+<l:gentext key="technicaleditor" text="技术编辑"/>
+<l:gentext key="translator" text="译者"/>
+<l:gentext key="listofequations" text="公式清单"/>
+<l:gentext key="ListofEquations" text="公式清单"/>
+<l:gentext key="ListofExamples" text="范例清单"/>
+<l:gentext key="listofexamples" text="范例清单"/>
+<l:gentext key="ListofFigures" text="插图清单"/>
+<l:gentext key="listoffigures" text="插图清单"/>
+<l:gentext key="ListofProcedures" text="过程清单"/>
+<l:gentext key="listofprocedures" text="过程清单"/>
+<l:gentext key="listoftables" text="表格清单"/>
+<l:gentext key="ListofTables" text="表格清单"/>
+<l:gentext key="ListofUnknown" text="未知清单"/>
+<l:gentext key="listofunknown" text="未知清单"/>
+<l:gentext key="nav-home" text="起始页"/>
+<l:gentext key="nav-next" text="下一页"/>
+<l:gentext key="nav-next-sibling" text="快进"/>
+<l:gentext key="nav-prev" text="上一页"/>
+<l:gentext key="nav-prev-sibling" text="快退"/>
+<l:gentext key="nav-up" text="上一级"/>
+<l:gentext key="nav-toc" text="目录"/>
+<l:gentext key="Draft" text="草稿"/>
+<l:gentext key="above" text="以上"/>
+<l:gentext key="below" text="以下"/>
+<l:gentext key="sectioncalled" text="一节"/>
+<l:gentext key="index symbols" text="符号"/>
+<l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
+<l:dingbat key="bullet" text="·"/>
+<l:gentext key="hyphenation-character" text="-"/>
+<l:gentext key="hyphenation-push-character-count" text="2"/>
+<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="附录 %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="第 %n 章 %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="公式 %n. %t"/>
+<l:template name="example" text="例 %n. %t"/>
+<l:template name="figure" text="图 %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t"/>
+<l:template name="glossentry" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="第 %n 部分 %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="过程 %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="产品 %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="表 %n. %t"/>
+<l:template name="task" text="%t"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text=""/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="附录 %n. %t"/>
+<l:template name="article/appendix" text="%n. %t"/>
+<l:template name="bridgehead" text="%n. %t"/>
+<l:template name="chapter" text="第 %n 章 %t"/>
+<l:template name="part" text="部分 %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="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="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="问: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="问: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(第 %p 页)"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(第 %p 页)"/>
+<l:template name="Page" text="第 %p 页"/>
+<l:template name="bridgehead" text="“%t”一节"/>
+<l:template name="refsection" text="“%t”一节"/>
+<l:template name="refsect1" text="“%t”一节"/>
+<l:template name="refsect2" text="“%t”一节"/>
+<l:template name="refsect3" text="“%t”一节"/>
+<l:template name="sect1" text="“%t”一节"/>
+<l:template name="sect2" text="“%t”一节"/>
+<l:template name="sect3" text="“%t”一节"/>
+<l:template name="sect4" text="“%t”一节"/>
+<l:template name="sect5" text="“%t”一节"/>
+<l:template name="section" text="“%t”一节"/>
+<l:template name="simplesect" text="“%t”一节"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="附录 %n"/>
+<l:template name="bridgehead" text="第 %n 节"/>
+<l:template name="chapter" text="第 %n 章"/>
+<l:template name="equation" text="公式 %n"/>
+<l:template name="example" text="例 %n"/>
+<l:template name="figure" text="图 %n"/>
+<l:template name="part" text="第 %n 部分"/>
+<l:template name="procedure" text="过程 %n"/>
+<l:template name="productionset" text="产品 %n"/>
+<l:template name="qandadiv" text="质保 %n"/>
+<l:template name="qandaentry" text="问: %n"/>
+<l:template name="question" text="问: %n"/>
+<l:template name="sect1" text="第 %n 节"/>
+<l:template name="sect2" text="第 %n 节"/>
+<l:template name="sect3" text="第 %n 节"/>
+<l:template name="sect4" text="第 %n 节"/>
+<l:template name="sect5" text="第 %n 节"/>
+<l:template name="section" text="第 %n 节"/>
+<l:template name="table" text="表 %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="附录 %n, %t"/>
+<l:template name="bridgehead" text="第 %n 节 “%t”"/>
+<l:template name="chapter" text="第 %n 章 %t"/>
+<l:template name="equation" text="公式 %n “%t”"/>
+<l:template name="example" text="例 %n “%t”"/>
+<l:template name="figure" text="图 %n “%t”"/>
+<l:template name="part" text="第 %n 部分 “%t”"/>
+<l:template name="procedure" text="过程 %n, “%t”"/>
+<l:template name="productionset" text="产品 %n, “%t”"/>
+<l:template name="qandadiv" text="质保 %n, “%t”"/>
+<l:template name="refsect1" text="“%t”一节"/>
+<l:template name="refsect2" text="“%t”一节"/>
+<l:template name="refsect3" text="“%t”一节"/>
+<l:template name="refsection" text="“%t”一节"/>
+<l:template name="sect1" text="第 %n 节 “%t”"/>
+<l:template name="sect2" text="第 %n 节 “%t”"/>
+<l:template name="sect3" text="第 %n 节 “%t”"/>
+<l:template name="sect4" text="第 %n 节 “%t”"/>
+<l:template name="sect5" text="第 %n 节 “%t”"/>
+<l:template name="section" text="第 %n 节 “%t”"/>
+<l:template name="simplesect" text="“%t”一节"/>
+<l:template name="table" text="表 %n “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text="、"/>
+<l:template name="sep2" text="和"/>
+<l:template name="seplast" text="和"/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="见%t"/>
+<l:template name="seealso" text="参见%t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="受众:"/>
+<l:template name="MsgLevel" text="级别:"/>
+<l:template name="MsgOrig" text="出处:"/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="Y-m-d"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="一月"/>
+<l:template name="February" text="二月"/>
+<l:template name="March" text="三月"/>
+<l:template name="April" text="四月"/>
+<l:template name="May" text="五月"/>
+<l:template name="June" text="六月"/>
+<l:template name="July" text="七月"/>
+<l:template name="August" text="八月"/>
+<l:template name="September" text="九月"/>
+<l:template name="October" text="十月"/>
+<l:template name="November" text="十一月"/>
+<l:template name="December" text="十二月"/>
+<l:template name="Monday" text="星期一"/>
+<l:template name="Tuesday" text="星期二"/>
+<l:template name="Wednesday" text="星期三"/>
+<l:template name="Thursday" text="星期四"/>
+<l:template name="Friday" text="星期五"/>
+<l:template name="Saturday" text="星期六"/>
+<l:template name="Sunday" text="星期日"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="一月"/>
+<l:template name="Feb" text="二月"/>
+<l:template name="Mar" text="三月"/>
+<l:template name="Apr" text="四月"/>
+<l:template name="May" text="五月"/>
+<l:template name="Jun" text="六月"/>
+<l:template name="Jul" text="七月"/>
+<l:template name="Aug" text="八月"/>
+<l:template name="Sep" text="九月"/>
+<l:template name="Oct" text="十月"/>
+<l:template name="Nov" text="十一月"/>
+<l:template name="Dec" text="十二月"/>
+<l:template name="Mon" text="周一"/>
+<l:template name="Tue" text="周二"/>
+<l:template name="Wed" text="周三"/>
+<l:template name="Thu" text="周四"/>
+<l:template name="Fri" text="周五"/>
+<l:template name="Sat" text="周六"/>
+<l:template name="Sun" text="周日"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0804 Chinese (CHINA)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters><l:l i="-1"/>
+<l:l i="0">其它</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/common/zh_tw.xml b/docs/xsl-generic/common/zh_tw.xml
new file mode 100644
index 00000000..db63cdca
--- /dev/null
+++ b/docs/xsl-generic/common/zh_tw.xml
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="zh_tw" english-language-name="Chinese (Taiwan)">
+
+<!-- * This file is generated automatically. -->
+<!-- * To submit changes to this file upstream (to the DocBook Project) -->
+<!-- * do not submit an edited version of this file. Instead, submit an -->
+<!-- * edited version of the source file at the following location: -->
+<!-- * -->
+<!-- * https://svn.sourceforge.net/svnroot/docbook/trunk/gentext/locale/zh_tw.xml -->
+<!-- * -->
+<!-- * E-mail the edited zh_tw.xml source file to: -->
+<!-- * -->
+<!-- * docbook-developers@lists.sourceforge.net -->
+
+<!-- ******************************************************************** -->
+
+<!-- This file is part of the XSL DocBook Stylesheet distribution. -->
+<!-- See ../README or http://docbook.sf.net/release/xsl/current/ for -->
+<!-- copyright and other information. -->
+
+<!-- ******************************************************************** -->
+<!-- In these files, % with a letter is used for a placeholder: -->
+<!-- %t is the current element's title -->
+<!-- %s is the current element's subtitle (if applicable)-->
+<!-- %n is the current element's number label-->
+<!-- %p is the current element's page number (if applicable)-->
+<!-- ******************************************************************** -->
+
+
+<l:gentext key="Abstract" text="摘要"/>
+<l:gentext key="abstract" text="摘要"/>
+<l:gentext key="Answer" text="答:"/>
+<l:gentext key="answer" text="答:"/>
+<l:gentext key="Appendix" text="附錄"/>
+<l:gentext key="appendix" text="附錄"/>
+<l:gentext key="Article" text="文章"/>
+<l:gentext key="article" text="文章"/>
+<l:gentext key="Author" text="Author" lang="en"/>
+<l:gentext key="Bibliography" text="參考文獻"/>
+<l:gentext key="bibliography" text="參考文獻"/>
+<l:gentext key="Book" text="書目"/>
+<l:gentext key="book" text="書目"/>
+<l:gentext key="CAUTION" text="注意"/>
+<l:gentext key="Caution" text="注意"/>
+<l:gentext key="caution" text="注意"/>
+<l:gentext key="Chapter" text="章"/>
+<l:gentext key="chapter" text="章"/>
+<l:gentext key="Colophon" text="版本記錄"/>
+<l:gentext key="colophon" text="版本記錄"/>
+<l:gentext key="Copyright" text="版權"/>
+<l:gentext key="copyright" text="版權"/>
+<l:gentext key="Dedication" text="奉獻"/>
+<l:gentext key="dedication" text="奉獻"/>
+<l:gentext key="Edition" text="版"/>
+<l:gentext key="edition" text="版"/>
+<l:gentext key="Editor" text="Editor" lang="en"/>
+<l:gentext key="Equation" text="方程式"/>
+<l:gentext key="equation" text="方程式"/>
+<l:gentext key="Example" text="範例"/>
+<l:gentext key="example" text="範例"/>
+<l:gentext key="Figure" text="圖形"/>
+<l:gentext key="figure" text="圖形"/>
+<l:gentext key="Glossary" text="小辭彙"/>
+<l:gentext key="glossary" text="小辭彙"/>
+<l:gentext key="GlossSee" text="參見"/>
+<l:gentext key="glosssee" text="參見"/>
+<l:gentext key="GlossSeeAlso" text="另參見"/>
+<l:gentext key="glossseealso" text="另參見"/>
+<l:gentext key="IMPORTANT" text="重要"/>
+<l:gentext key="important" text="重要"/>
+<l:gentext key="Important" text="重要"/>
+<l:gentext key="Index" text="索引"/>
+<l:gentext key="index" text="索引"/>
+<l:gentext key="ISBN" text="ISBN"/>
+<l:gentext key="isbn" text="ISBN"/>
+<l:gentext key="LegalNotice" text="法律聲明"/>
+<l:gentext key="legalnotice" text="法律聲明"/>
+<l:gentext key="MsgAud" text="讀者"/>
+<l:gentext key="msgaud" text="讀者"/>
+<l:gentext key="MsgLevel" text="程度"/>
+<l:gentext key="msglevel" text="程度"/>
+<l:gentext key="MsgOrig" text="出處"/>
+<l:gentext key="msgorig" text="出處"/>
+<l:gentext key="NOTE" text="注"/>
+<l:gentext key="Note" text="注"/>
+<l:gentext key="note" text="注"/>
+<l:gentext key="Part" text="部"/>
+<l:gentext key="part" text="部"/>
+<l:gentext key="Preface" text="序言"/>
+<l:gentext key="preface" text="序言"/>
+<l:gentext key="Procedure" text="過程"/>
+<l:gentext key="procedure" text="過程"/>
+<l:gentext key="ProductionSet" text="Production"/>
+<l:gentext key="PubDate" text="Publication Date" lang="en"/>
+<l:gentext key="pubdate" text="Publication date" lang="en"/>
+<l:gentext key="Published" text="出版"/>
+<l:gentext key="published" text="出版"/>
+<l:gentext key="Publisher" text="Publisher" lang="en"/>
+<l:gentext key="Qandadiv" text="問:且答:"/>
+<l:gentext key="qandadiv" text="問:且答:"/>
+<l:gentext key="QandASet" text="Frequently Asked Questions" lang="en"/>
+<l:gentext key="Question" text="問:"/>
+<l:gentext key="question" text="問:"/>
+<l:gentext key="RefEntry" text="參照項目"/>
+<l:gentext key="refentry" text="參照項目"/>
+<l:gentext key="Reference" text="參考"/>
+<l:gentext key="reference" text="參考"/>
+<l:gentext key="References" text="References" lang="en"/>
+<l:gentext key="RefName" text="參考名"/>
+<l:gentext key="refname" text="參考名"/>
+<l:gentext key="RefSection" text="參照章節"/>
+<l:gentext key="refsection" text="參照章節"/>
+<l:gentext key="RefSynopsisDiv" text="大綱"/>
+<l:gentext key="refsynopsisdiv" text="大綱"/>
+<l:gentext key="RevHistory" text="修訂記錄"/>
+<l:gentext key="revhistory" text="修訂記錄"/>
+<l:gentext key="revision" text="修訂"/>
+<l:gentext key="Revision" text="修訂"/>
+<l:gentext key="sect1" text="Section"/>
+<l:gentext key="sect2" text="Section"/>
+<l:gentext key="sect3" text="Section"/>
+<l:gentext key="sect4" text="Section"/>
+<l:gentext key="sect5" text="Section"/>
+<l:gentext key="section" text="節"/>
+<l:gentext key="Section" text="節"/>
+<l:gentext key="see" text="見"/>
+<l:gentext key="See" text="見"/>
+<l:gentext key="seealso" text="另見"/>
+<l:gentext key="Seealso" text="另見"/>
+<l:gentext key="SeeAlso" text="另見"/>
+<l:gentext key="set" text="Set"/>
+<l:gentext key="Set" text="Set"/>
+<l:gentext key="setindex" text="Set Index"/>
+<l:gentext key="SetIndex" text="Set Index"/>
+<l:gentext key="Sidebar" text=""/>
+<l:gentext key="sidebar" text=""/>
+<l:gentext key="step" text="步驟"/>
+<l:gentext key="Step" text="步驟"/>
+<l:gentext key="table" text="表格"/>
+<l:gentext key="Table" text="表格"/>
+<l:gentext key="task" text="Task" lang="en"/>
+<l:gentext key="Task" text="Task" lang="en"/>
+<l:gentext key="tip" text="提示"/>
+<l:gentext key="TIP" text="提示"/>
+<l:gentext key="Tip" text="提示"/>
+<l:gentext key="Warning" text="警告"/>
+<l:gentext key="warning" text="警告"/>
+<l:gentext key="WARNING" text="警告"/>
+<l:gentext key="and" text="且"/>
+<l:gentext key="by" text="由"/>
+<l:gentext key="Edited" text="編輯"/>
+<l:gentext key="edited" text="編輯"/>
+<l:gentext key="Editedby" text="編輯"/>
+<l:gentext key="editedby" text="編輯"/>
+<l:gentext key="in" text="在"/>
+<l:gentext key="lastlistcomma" text=","/>
+<l:gentext key="listcomma" text=","/>
+<l:gentext key="nonexistantelement" text="不存在的元素"/>
+<l:gentext key="notes" text="注"/>
+<l:gentext key="Notes" text="注"/>
+<l:gentext key="Pgs" text="頁"/>
+<l:gentext key="pgs" text="頁"/>
+<l:gentext key="Revisedby" text="修訂"/>
+<l:gentext key="revisedby" text="修訂"/>
+<l:gentext key="TableNotes" text="注釋"/>
+<l:gentext key="tablenotes" text="注釋"/>
+<l:gentext key="TableofContents" text="內容目錄"/>
+<l:gentext key="tableofcontents" text="內容目錄"/>
+<l:gentext key="unexpectedelementname" text="非預期的元素名"/>
+<l:gentext key="unsupported" text="未支援"/>
+<l:gentext key="xrefto" text="參照"/>
+<l:gentext key="Authors" text="Authors" lang="en"/>
+<l:gentext key="copyeditor" text="Copy Editor" lang="en"/>
+<l:gentext key="graphicdesigner" text="Graphic Designer" lang="en"/>
+<l:gentext key="productioneditor" text="Production Editor" lang="en"/>
+<l:gentext key="technicaleditor" text="Technical Editor" lang="en"/>
+<l:gentext key="translator" text="Translator" lang="en"/>
+<l:gentext key="listofequations" text="公式目錄"/>
+<l:gentext key="ListofEquations" text="公式目錄"/>
+<l:gentext key="ListofExamples" text="範例目錄"/>
+<l:gentext key="listofexamples" text="範例目錄"/>
+<l:gentext key="ListofFigures" text="附圖目錄"/>
+<l:gentext key="listoffigures" text="附圖目錄"/>
+<l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listofprocedures" text="List of Procedures" lang="en"/>
+<l:gentext key="listoftables" text="附表目錄"/>
+<l:gentext key="ListofTables" text="附表目錄"/>
+<l:gentext key="ListofUnknown" text="其它內容目錄"/>
+<l:gentext key="listofunknown" text="其它內容目錄"/>
+<l:gentext key="nav-home" text="內容"/>
+<l:gentext key="nav-next" text="下一頁"/>
+<l:gentext key="nav-next-sibling" text="快速向後"/>
+<l:gentext key="nav-prev" text="前一頁"/>
+<l:gentext key="nav-prev-sibling" text="快速向前"/>
+<l:gentext key="nav-up" text="上一層"/>
+<l:gentext key="nav-toc" text="ToC" lang="en"/>
+<l:gentext key="Draft" text="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" lang="en"/>
+<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" lang="en"/>
+<l:gentext key="normalize.sort.input" text="AaÀàÁáÂâÃãÄäÅåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧḀḁẚẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặBbƀƁɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČčƇƈɕḈḉDdĎďĐđƊɗƋƌDžDzȡɖḊḋḌḍḎḏḐḑḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệFfƑƒḞḟGgĜĝĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÍíÎîÏïĨĩĪīĬĭĮįİƗɨǏǐȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰʝKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀŁłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀṁṂṃNnÑñŃńŅņŇňƝɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱṌṍṎṏṐṑṒṓỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợPpƤƥṔṕṖṗQqʠRrŔŕŖŗŘřȐȑȒȓɼɽɾṘṙṚṛṜṝṞṟSsŚśŜŝŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀẁẂẃẄẅẆẇẈẉẘXxẊẋẌẍYyÝýÿŸŶŷƳƴȲȳẎẏẙỲỳỴỵỶỷỸỹZzŹźŻżŽžƵƶȤȥʐʑẐẑẒẓẔẕẕ" lang="en"/>
+<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
+<l:dingbat key="startquote" text="“"/>
+<l:dingbat key="endquote" text="”"/>
+<l:dingbat key="nestedstartquote" text="‘"/>
+<l:dingbat key="nestedendquote" text="’"/>
+<l:dingbat key="singlestartquote" text="‘" lang="en"/>
+<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="bullet" text="•"/>
+<l:gentext key="hyphenation-character" text="-" lang="en"/>
+<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
+<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="styles"><l:template name="person-name" text="first-last"/>
+</l:context>
+<l:context name="title"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="%t"/>
+<l:template name="appendix" text="附錄 %n. %t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="biblioentry" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliolist" text="%t" lang="en"/>
+<l:template name="bibliomixed" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="章 %n. %t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="方程式 %n. %t"/>
+<l:template name="example" text="範例 %n. %t"/>
+<l:template name="figure" text="圖形 %n. %t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="glosslist" text="%t" lang="en"/>
+<l:template name="glossentry" text="%t" lang="en"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text=""/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="部 %n. %t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="procedure.formal" text="過程 %n. %t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="productionset.formal" text="Production %n"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="%t"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="%t"/>
+<l:template name="refentry" text="%t"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsection" text="%t" lang="en"/>
+<l:template name="refsect1" text="%t"/>
+<l:template name="refsect2" text="%t"/>
+<l:template name="refsect3" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="step" text="%t"/>
+<l:template name="table" text="表格 %n. %t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tasksummary" text="%t" lang="en"/>
+<l:template name="taskprerequisites" text="%t" lang="en"/>
+<l:template name="taskrelated" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="" lang="en"/>
+<l:template name="warning" text="%t"/>
+</l:context>
+<l:context name="title-unnumbered"><l:template name="appendix" text="%t"/>
+<l:template name="article/appendix" text="%t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="sect1" text="%t"/>
+<l:template name="sect2" text="%t"/>
+<l:template name="sect3" text="%t"/>
+<l:template name="sect4" text="%t"/>
+<l:template name="sect5" text="%t"/>
+<l:template name="section" text="%t"/>
+<l:template name="simplesect" text="%t"/>
+<l:template name="part" text="%t" lang="en"/>
+</l:context>
+<l:context name="title-numbered"><l:template name="appendix" text="附錄 %n. %t"/>
+<l:template name="article/appendix" text="%n. %t" lang="en"/>
+<l:template name="bridgehead" text="%t"/>
+<l:template name="chapter" text="章 %n. %t"/>
+<l:template name="part" text="部 %n. %t"/>
+<l:template name="sect1" text="%n. %t"/>
+<l:template name="sect2" text="%n. %t"/>
+<l:template name="sect3" text="%n. %t"/>
+<l:template name="sect4" text="%n. %t"/>
+<l:template name="sect5" text="%n. %t"/>
+<l:template name="section" text="%n. %t"/>
+<l:template name="simplesect" text="%n. %t"/>
+</l:context>
+<l:context name="subtitle"><l:template name="appendix" text="%s"/>
+<l:template name="article" text="%s"/>
+<l:template name="bibliodiv" text="%s"/>
+<l:template name="biblioentry" text="%s"/>
+<l:template name="bibliography" text="%s"/>
+<l:template name="bibliomixed" text="%s"/>
+<l:template name="bibliomset" text="%s"/>
+<l:template name="biblioset" text="%s"/>
+<l:template name="book" text="%s"/>
+<l:template name="chapter" text="%s"/>
+<l:template name="colophon" text="%s"/>
+<l:template name="dedication" text="%s"/>
+<l:template name="glossary" text="%s"/>
+<l:template name="glossdiv" text="%s"/>
+<l:template name="index" text="%s"/>
+<l:template name="indexdiv" text="%s"/>
+<l:template name="lot" text="%s"/>
+<l:template name="part" text="%s"/>
+<l:template name="partintro" text="%s"/>
+<l:template name="preface" text="%s"/>
+<l:template name="refentry" text="%s"/>
+<l:template name="reference" text="%s"/>
+<l:template name="refsection" text="%s" lang="en"/>
+<l:template name="refsect1" text="%s"/>
+<l:template name="refsect2" text="%s"/>
+<l:template name="refsect3" text="%s"/>
+<l:template name="refsynopsisdiv" text="%s"/>
+<l:template name="sect1" text="%s"/>
+<l:template name="sect2" text="%s"/>
+<l:template name="sect3" text="%s"/>
+<l:template name="sect4" text="%s"/>
+<l:template name="sect5" text="%s"/>
+<l:template name="section" text="%s"/>
+<l:template name="set" text="%s"/>
+<l:template name="setindex" text="%s"/>
+<l:template name="sidebar" text="%s"/>
+<l:template name="simplesect" text="%s"/>
+<l:template name="toc" text="%s"/>
+</l:context>
+<l:context name="xref"><l:template name="abstract" text="%t"/>
+<l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="%t"/>
+<l:template name="article" text="%t"/>
+<l:template name="authorblurb" text="%t"/>
+<l:template name="bibliodiv" text="%t"/>
+<l:template name="bibliography" text="%t"/>
+<l:template name="bibliomset" text="%t"/>
+<l:template name="biblioset" text="%t"/>
+<l:template name="blockquote" text="%t"/>
+<l:template name="book" text="%t"/>
+<l:template name="calloutlist" text="%t"/>
+<l:template name="caution" text="%t"/>
+<l:template name="chapter" text="%t"/>
+<l:template name="colophon" text="%t"/>
+<l:template name="constraintdef" text="%t"/>
+<l:template name="dedication" text="%t"/>
+<l:template name="equation" text="%t"/>
+<l:template name="example" text="%t"/>
+<l:template name="figure" text="%t"/>
+<l:template name="foil" text="%t" lang="en"/>
+<l:template name="foilgroup" text="%t" lang="en"/>
+<l:template name="formalpara" text="%t"/>
+<l:template name="glossary" text="%t"/>
+<l:template name="glossdiv" text="%t"/>
+<l:template name="important" text="%t"/>
+<l:template name="index" text="%t"/>
+<l:template name="indexdiv" text="%t"/>
+<l:template name="itemizedlist" text="%t"/>
+<l:template name="legalnotice" text="%t"/>
+<l:template name="listitem" text="%n"/>
+<l:template name="lot" text="%t"/>
+<l:template name="msg" text="%t"/>
+<l:template name="msgexplan" text="%t"/>
+<l:template name="msgmain" text="%t"/>
+<l:template name="msgrel" text="%t"/>
+<l:template name="msgset" text="%t"/>
+<l:template name="msgsub" text="%t"/>
+<l:template name="note" text="%t"/>
+<l:template name="orderedlist" text="%t"/>
+<l:template name="part" text="%t"/>
+<l:template name="partintro" text="%t"/>
+<l:template name="preface" text="%t"/>
+<l:template name="procedure" text="%t"/>
+<l:template name="productionset" text="%t"/>
+<l:template name="qandadiv" text="%t"/>
+<l:template name="qandaentry" text="問: %n"/>
+<l:template name="qandaset" text="%t"/>
+<l:template name="question" text="問: %n"/>
+<l:template name="reference" text="%t"/>
+<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="segmentedlist" text="%t"/>
+<l:template name="set" text="%t"/>
+<l:template name="setindex" text="%t"/>
+<l:template name="sidebar" text="%t"/>
+<l:template name="table" text="%t"/>
+<l:template name="task" text="%t" lang="en"/>
+<l:template name="tip" text="%t"/>
+<l:template name="toc" text="%t"/>
+<l:template name="variablelist" text="%t"/>
+<l:template name="varlistentry" text="%n"/>
+<l:template name="warning" text="%t"/>
+<l:template name="olink.document.citation" text=" in %o" lang="en"/>
+<l:template name="olink.page.citation" text=" (page %p)" lang="en"/>
+<l:template name="page.citation" text=" [%p]"/>
+<l:template name="page" text="(page %p)" lang="en"/>
+<l:template name="docname" text=" in %o" lang="en"/>
+<l:template name="docnamelong" text=" in the document titled %o" lang="en"/>
+<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
+<l:template name="Page" text="Page %p" lang="en"/>
+<l:template name="bridgehead" text="“%t”"/>
+<l:template name="refsection" text="“%t”"/>
+<l:template name="refsect1" text="“%t”"/>
+<l:template name="refsect2" text="“%t”"/>
+<l:template name="refsect3" text="“%t”"/>
+<l:template name="sect1" text="“%t”"/>
+<l:template name="sect2" text="“%t”"/>
+<l:template name="sect3" text="“%t”"/>
+<l:template name="sect4" text="“%t”"/>
+<l:template name="sect5" text="“%t”"/>
+<l:template name="section" text="“%t”"/>
+<l:template name="simplesect" text="“%t”"/>
+</l:context>
+<l:context name="xref-number"><l:template name="answer" text="答: %n"/>
+<l:template name="appendix" text="附錄 %n"/>
+<l:template name="bridgehead" text="節 %n"/>
+<l:template name="chapter" text="章 %n"/>
+<l:template name="equation" text="方程式 %n"/>
+<l:template name="example" text="範例 %n"/>
+<l:template name="figure" text="圖形 %n"/>
+<l:template name="part" text="部 %n"/>
+<l:template name="procedure" text="過程 %n"/>
+<l:template name="productionset" text="Production %n"/>
+<l:template name="qandadiv" text="問:且答: %n"/>
+<l:template name="qandaentry" text="問: %n"/>
+<l:template name="question" text="問: %n"/>
+<l:template name="sect1" text="節 %n"/>
+<l:template name="sect2" text="節 %n"/>
+<l:template name="sect3" text="節 %n"/>
+<l:template name="sect4" text="節 %n"/>
+<l:template name="sect5" text="節 %n"/>
+<l:template name="section" text="節 %n"/>
+<l:template name="table" text="表格 %n"/>
+</l:context>
+<l:context name="xref-number-and-title"><l:template name="appendix" text="附錄 %n, %t"/>
+<l:template name="bridgehead" text="節 %n, “%t”"/>
+<l:template name="chapter" text="章 %n, %t"/>
+<l:template name="equation" text="方程式 %n, “%t”"/>
+<l:template name="example" text="範例 %n, “%t”"/>
+<l:template name="figure" text="圖形 %n, “%t”"/>
+<l:template name="part" text="部 %n, “%t”"/>
+<l:template name="procedure" text="過程 %n, “%t”"/>
+<l:template name="productionset" text="Production %n, “%t”"/>
+<l:template name="qandadiv" text="問:且答: %n, “%t”"/>
+<l:template name="refsect1" text="the section called “%t”"/>
+<l:template name="refsect2" text="the section called “%t”"/>
+<l:template name="refsect3" text="the section called “%t”"/>
+<l:template name="refsection" text="the section called “%t”"/>
+<l:template name="sect1" text="節 %n, “%t”"/>
+<l:template name="sect2" text="節 %n, “%t”"/>
+<l:template name="sect3" text="節 %n, “%t”"/>
+<l:template name="sect4" text="節 %n, “%t”"/>
+<l:template name="sect5" text="節 %n, “%t”"/>
+<l:template name="section" text="節 %n, “%t”"/>
+<l:template name="simplesect" text="the section called “%t”"/>
+<l:template name="table" text="表格 %n, “%t”"/>
+</l:context>
+<l:context name="authorgroup"><l:template name="sep" text=", "/>
+<l:template name="sep2" text=" 且 "/>
+<l:template name="seplast" text=", 且 "/>
+</l:context>
+<l:context name="glossary"><l:template name="see" text="參見 %t"/>
+<l:template name="seealso" text="另參見 %t"/>
+</l:context>
+<l:context name="msgset"><l:template name="MsgAud" text="讀者: "/>
+<l:template name="MsgLevel" text="程度: "/>
+<l:template name="MsgOrig" text="出處: "/>
+</l:context>
+<l:context name="datetime"><l:template name="format" text="m/d/Y" lang="en"/>
+</l:context>
+<l:context name="termdef"><l:template name="prefix" text="[Definition: " lang="en"/>
+<l:template name="suffix" text="]" lang="en"/>
+</l:context>
+<l:context name="datetime-full"><l:template name="January" text="January" lang="en"/>
+<l:template name="February" text="February" lang="en"/>
+<l:template name="March" text="March" lang="en"/>
+<l:template name="April" text="April" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="June" text="June" lang="en"/>
+<l:template name="July" text="July" lang="en"/>
+<l:template name="August" text="August" lang="en"/>
+<l:template name="September" text="September" lang="en"/>
+<l:template name="October" text="October" lang="en"/>
+<l:template name="November" text="November" lang="en"/>
+<l:template name="December" text="December" lang="en"/>
+<l:template name="Monday" text="Monday" lang="en"/>
+<l:template name="Tuesday" text="Tuesday" lang="en"/>
+<l:template name="Wednesday" text="Wednesday" lang="en"/>
+<l:template name="Thursday" text="Thursday" lang="en"/>
+<l:template name="Friday" text="Friday" lang="en"/>
+<l:template name="Saturday" text="Saturday" lang="en"/>
+<l:template name="Sunday" text="Sunday" lang="en"/>
+</l:context>
+<l:context name="datetime-abbrev"><l:template name="Jan" text="Jan" lang="en"/>
+<l:template name="Feb" text="Feb" lang="en"/>
+<l:template name="Mar" text="Mar" lang="en"/>
+<l:template name="Apr" text="Apr" lang="en"/>
+<l:template name="May" text="May" lang="en"/>
+<l:template name="Jun" text="Jun" lang="en"/>
+<l:template name="Jul" text="Jul" lang="en"/>
+<l:template name="Aug" text="Aug" lang="en"/>
+<l:template name="Sep" text="Sep" lang="en"/>
+<l:template name="Oct" text="Oct" lang="en"/>
+<l:template name="Nov" text="Nov" lang="en"/>
+<l:template name="Dec" text="Dec" lang="en"/>
+<l:template name="Mon" text="Mon" lang="en"/>
+<l:template name="Tue" text="Tue" lang="en"/>
+<l:template name="Wed" text="Wed" lang="en"/>
+<l:template name="Thu" text="Thu" lang="en"/>
+<l:template name="Fri" text="Fri" lang="en"/>
+<l:template name="Sat" text="Sat" lang="en"/>
+<l:template name="Sun" text="Sun" lang="en"/>
+</l:context>
+<l:context name="htmlhelp"><l:template name="langcode" text="0x0404 Chinese (TAIWAN)"/>
+</l:context>
+<l:context name="index"><l:template name="term-separator" text=", " lang="en"/>
+<l:template name="number-separator" text=", " lang="en"/>
+<l:template name="range-separator" text="-" lang="en"/>
+</l:context>
+<l:context name="iso690"><l:template name="lastfirst.sep" text=", " lang="en"/>
+<l:template name="alt.person.two.sep" text=" – " lang="en"/>
+<l:template name="alt.person.last.sep" text=" – " lang="en"/>
+<l:template name="alt.person.more.sep" text=" – " lang="en"/>
+<l:template name="primary.editor" text=" (ed.)" lang="en"/>
+<l:template name="primary.many" text=", et al." lang="en"/>
+<l:template name="primary.sep" text=". " lang="en"/>
+<l:template name="submaintitle.sep" text=": " lang="en"/>
+<l:template name="title.sep" text=". " lang="en"/>
+<l:template name="othertitle.sep" text=", " lang="en"/>
+<l:template name="medium1" text=" [" lang="en"/>
+<l:template name="medium2" text="]" lang="en"/>
+<l:template name="secondary.person.sep" text="; " lang="en"/>
+<l:template name="secondary.sep" text=". " lang="en"/>
+<l:template name="respons.sep" text=". " lang="en"/>
+<l:template name="edition.sep" text=". " lang="en"/>
+<l:template name="edition.serial.sep" text=", " lang="en"/>
+<l:template name="issuing.range" text="-" lang="en"/>
+<l:template name="issuing.div" text=", " lang="en"/>
+<l:template name="issuing.sep" text=". " lang="en"/>
+<l:template name="partnr.sep" text=". " lang="en"/>
+<l:template name="placepubl.sep" text=": " lang="en"/>
+<l:template name="publyear.sep" text=", " lang="en"/>
+<l:template name="pubinfo.sep" text=". " lang="en"/>
+<l:template name="spec.pubinfo.sep" text=", " lang="en"/>
+<l:template name="upd.sep" text=", " lang="en"/>
+<l:template name="datecit1" text=" [cited " lang="en"/>
+<l:template name="datecit2" text="]" lang="en"/>
+<l:template name="extent.sep" text=". " lang="en"/>
+<l:template name="locs.sep" text=", " lang="en"/>
+<l:template name="location.sep" text=". " lang="en"/>
+<l:template name="serie.sep" text=". " lang="en"/>
+<l:template name="notice.sep" text=". " lang="en"/>
+<l:template name="access" text="Available " lang="en"/>
+<l:template name="acctoo" text="Also available " lang="en"/>
+<l:template name="onwww" text="from World Wide Web" lang="en"/>
+<l:template name="oninet" text="from Internet" lang="en"/>
+<l:template name="access.end" text=": " lang="en"/>
+<l:template name="link1" text="&lt;" lang="en"/>
+<l:template name="link2" text="&gt;" lang="en"/>
+<l:template name="access.sep" text=". " lang="en"/>
+<l:template name="isbn" text="ISBN " lang="en"/>
+<l:template name="issn" text="ISSN " lang="en"/>
+<l:template name="stdnum.sep" text=". " lang="en"/>
+<l:template name="patcountry.sep" text=". " lang="en"/>
+<l:template name="pattype.sep" text=", " lang="en"/>
+<l:template name="patnum.sep" text=". " lang="en"/>
+<l:template name="patdate.sep" text=". " lang="en"/>
+</l:context><l:letters lang="en"><l:l i="-1"/>
+<l:l i="0">Symbols</l:l>
+<l:l i="10">A</l:l>
+<l:l i="10">a</l:l>
+<l:l i="10">À</l:l>
+<l:l i="10">à</l:l>
+<l:l i="10">Á</l:l>
+<l:l i="10">á</l:l>
+<l:l i="10">Â</l:l>
+<l:l i="10">â</l:l>
+<l:l i="10">Ã</l:l>
+<l:l i="10">ã</l:l>
+<l:l i="10">Ä</l:l>
+<l:l i="10">ä</l:l>
+<l:l i="10">Å</l:l>
+<l:l i="10">å</l:l>
+<l:l i="10">Ā</l:l>
+<l:l i="10">ā</l:l>
+<l:l i="10">Ă</l:l>
+<l:l i="10">ă</l:l>
+<l:l i="10">Ą</l:l>
+<l:l i="10">ą</l:l>
+<l:l i="10">Ǎ</l:l>
+<l:l i="10">ǎ</l:l>
+<l:l i="10">Ǟ</l:l>
+<l:l i="10">ǟ</l:l>
+<l:l i="10">Ǡ</l:l>
+<l:l i="10">ǡ</l:l>
+<l:l i="10">Ǻ</l:l>
+<l:l i="10">ǻ</l:l>
+<l:l i="10">Ȁ</l:l>
+<l:l i="10">ȁ</l:l>
+<l:l i="10">Ȃ</l:l>
+<l:l i="10">ȃ</l:l>
+<l:l i="10">Ȧ</l:l>
+<l:l i="10">ȧ</l:l>
+<l:l i="10">Ḁ</l:l>
+<l:l i="10">ḁ</l:l>
+<l:l i="10">ẚ</l:l>
+<l:l i="10">Ạ</l:l>
+<l:l i="10">ạ</l:l>
+<l:l i="10">Ả</l:l>
+<l:l i="10">ả</l:l>
+<l:l i="10">Ấ</l:l>
+<l:l i="10">ấ</l:l>
+<l:l i="10">Ầ</l:l>
+<l:l i="10">ầ</l:l>
+<l:l i="10">Ẩ</l:l>
+<l:l i="10">ẩ</l:l>
+<l:l i="10">Ẫ</l:l>
+<l:l i="10">ẫ</l:l>
+<l:l i="10">Ậ</l:l>
+<l:l i="10">ậ</l:l>
+<l:l i="10">Ắ</l:l>
+<l:l i="10">ắ</l:l>
+<l:l i="10">Ằ</l:l>
+<l:l i="10">ằ</l:l>
+<l:l i="10">Ẳ</l:l>
+<l:l i="10">ẳ</l:l>
+<l:l i="10">Ẵ</l:l>
+<l:l i="10">ẵ</l:l>
+<l:l i="10">Ặ</l:l>
+<l:l i="10">ặ</l:l>
+<l:l i="20">B</l:l>
+<l:l i="20">b</l:l>
+<l:l i="20">ƀ</l:l>
+<l:l i="20">Ɓ</l:l>
+<l:l i="20">ɓ</l:l>
+<l:l i="20">Ƃ</l:l>
+<l:l i="20">ƃ</l:l>
+<l:l i="20">Ḃ</l:l>
+<l:l i="20">ḃ</l:l>
+<l:l i="20">Ḅ</l:l>
+<l:l i="20">ḅ</l:l>
+<l:l i="20">Ḇ</l:l>
+<l:l i="20">ḇ</l:l>
+<l:l i="30">C</l:l>
+<l:l i="30">c</l:l>
+<l:l i="30">Ç</l:l>
+<l:l i="30">ç</l:l>
+<l:l i="30">Ć</l:l>
+<l:l i="30">ć</l:l>
+<l:l i="30">Ĉ</l:l>
+<l:l i="30">ĉ</l:l>
+<l:l i="30">Ċ</l:l>
+<l:l i="30">ċ</l:l>
+<l:l i="30">Č</l:l>
+<l:l i="30">č</l:l>
+<l:l i="30">Ƈ</l:l>
+<l:l i="30">ƈ</l:l>
+<l:l i="30">ɕ</l:l>
+<l:l i="30">Ḉ</l:l>
+<l:l i="30">ḉ</l:l>
+<l:l i="40">D</l:l>
+<l:l i="40">d</l:l>
+<l:l i="40">Ď</l:l>
+<l:l i="40">ď</l:l>
+<l:l i="40">Đ</l:l>
+<l:l i="40">đ</l:l>
+<l:l i="40">Ɗ</l:l>
+<l:l i="40">ɗ</l:l>
+<l:l i="40">Ƌ</l:l>
+<l:l i="40">ƌ</l:l>
+<l:l i="40">Dž</l:l>
+<l:l i="40">Dz</l:l>
+<l:l i="40">ȡ</l:l>
+<l:l i="40">ɖ</l:l>
+<l:l i="40">Ḋ</l:l>
+<l:l i="40">ḋ</l:l>
+<l:l i="40">Ḍ</l:l>
+<l:l i="40">ḍ</l:l>
+<l:l i="40">Ḏ</l:l>
+<l:l i="40">ḏ</l:l>
+<l:l i="40">Ḑ</l:l>
+<l:l i="40">ḑ</l:l>
+<l:l i="40">Ḓ</l:l>
+<l:l i="40">ḓ</l:l>
+<l:l i="50">E</l:l>
+<l:l i="50">e</l:l>
+<l:l i="50">È</l:l>
+<l:l i="50">è</l:l>
+<l:l i="50">É</l:l>
+<l:l i="50">é</l:l>
+<l:l i="50">Ê</l:l>
+<l:l i="50">ê</l:l>
+<l:l i="50">Ë</l:l>
+<l:l i="50">ë</l:l>
+<l:l i="50">Ē</l:l>
+<l:l i="50">ē</l:l>
+<l:l i="50">Ĕ</l:l>
+<l:l i="50">ĕ</l:l>
+<l:l i="50">Ė</l:l>
+<l:l i="50">ė</l:l>
+<l:l i="50">Ę</l:l>
+<l:l i="50">ę</l:l>
+<l:l i="50">Ě</l:l>
+<l:l i="50">ě</l:l>
+<l:l i="50">Ȅ</l:l>
+<l:l i="50">ȅ</l:l>
+<l:l i="50">Ȇ</l:l>
+<l:l i="50">ȇ</l:l>
+<l:l i="50">Ȩ</l:l>
+<l:l i="50">ȩ</l:l>
+<l:l i="50">Ḕ</l:l>
+<l:l i="50">ḕ</l:l>
+<l:l i="50">Ḗ</l:l>
+<l:l i="50">ḗ</l:l>
+<l:l i="50">Ḙ</l:l>
+<l:l i="50">ḙ</l:l>
+<l:l i="50">Ḛ</l:l>
+<l:l i="50">ḛ</l:l>
+<l:l i="50">Ḝ</l:l>
+<l:l i="50">ḝ</l:l>
+<l:l i="50">Ẹ</l:l>
+<l:l i="50">ẹ</l:l>
+<l:l i="50">Ẻ</l:l>
+<l:l i="50">ẻ</l:l>
+<l:l i="50">Ẽ</l:l>
+<l:l i="50">ẽ</l:l>
+<l:l i="50">Ế</l:l>
+<l:l i="50">ế</l:l>
+<l:l i="50">Ề</l:l>
+<l:l i="50">ề</l:l>
+<l:l i="50">Ể</l:l>
+<l:l i="50">ể</l:l>
+<l:l i="50">Ễ</l:l>
+<l:l i="50">ễ</l:l>
+<l:l i="50">Ệ</l:l>
+<l:l i="50">ệ</l:l>
+<l:l i="60">F</l:l>
+<l:l i="60">f</l:l>
+<l:l i="60">Ƒ</l:l>
+<l:l i="60">ƒ</l:l>
+<l:l i="60">Ḟ</l:l>
+<l:l i="60">ḟ</l:l>
+<l:l i="70">G</l:l>
+<l:l i="70">g</l:l>
+<l:l i="70">Ĝ</l:l>
+<l:l i="70">ĝ</l:l>
+<l:l i="70">Ğ</l:l>
+<l:l i="70">ğ</l:l>
+<l:l i="70">Ġ</l:l>
+<l:l i="70">ġ</l:l>
+<l:l i="70">Ģ</l:l>
+<l:l i="70">ģ</l:l>
+<l:l i="70">Ɠ</l:l>
+<l:l i="70">ɠ</l:l>
+<l:l i="70">Ǥ</l:l>
+<l:l i="70">ǥ</l:l>
+<l:l i="70">Ǧ</l:l>
+<l:l i="70">ǧ</l:l>
+<l:l i="70">Ǵ</l:l>
+<l:l i="70">ǵ</l:l>
+<l:l i="70">Ḡ</l:l>
+<l:l i="70">ḡ</l:l>
+<l:l i="80">H</l:l>
+<l:l i="80">h</l:l>
+<l:l i="80">Ĥ</l:l>
+<l:l i="80">ĥ</l:l>
+<l:l i="80">Ħ</l:l>
+<l:l i="80">ħ</l:l>
+<l:l i="80">Ȟ</l:l>
+<l:l i="80">ȟ</l:l>
+<l:l i="80">ɦ</l:l>
+<l:l i="80">Ḣ</l:l>
+<l:l i="80">ḣ</l:l>
+<l:l i="80">Ḥ</l:l>
+<l:l i="80">ḥ</l:l>
+<l:l i="80">Ḧ</l:l>
+<l:l i="80">ḧ</l:l>
+<l:l i="80">Ḩ</l:l>
+<l:l i="80">ḩ</l:l>
+<l:l i="80">Ḫ</l:l>
+<l:l i="80">ḫ</l:l>
+<l:l i="80">ẖ</l:l>
+<l:l i="90">I</l:l>
+<l:l i="90">i</l:l>
+<l:l i="90">Ì</l:l>
+<l:l i="90">ì</l:l>
+<l:l i="90">Í</l:l>
+<l:l i="90">í</l:l>
+<l:l i="90">Î</l:l>
+<l:l i="90">î</l:l>
+<l:l i="90">Ï</l:l>
+<l:l i="90">ï</l:l>
+<l:l i="90">Ĩ</l:l>
+<l:l i="90">ĩ</l:l>
+<l:l i="90">Ī</l:l>
+<l:l i="90">ī</l:l>
+<l:l i="90">Ĭ</l:l>
+<l:l i="90">ĭ</l:l>
+<l:l i="90">Į</l:l>
+<l:l i="90">į</l:l>
+<l:l i="90">İ</l:l>
+<l:l i="90">Ɨ</l:l>
+<l:l i="90">ɨ</l:l>
+<l:l i="90">Ǐ</l:l>
+<l:l i="90">ǐ</l:l>
+<l:l i="90">Ȉ</l:l>
+<l:l i="90">ȉ</l:l>
+<l:l i="90">Ȋ</l:l>
+<l:l i="90">ȋ</l:l>
+<l:l i="90">Ḭ</l:l>
+<l:l i="90">ḭ</l:l>
+<l:l i="90">Ḯ</l:l>
+<l:l i="90">ḯ</l:l>
+<l:l i="90">Ỉ</l:l>
+<l:l i="90">ỉ</l:l>
+<l:l i="90">Ị</l:l>
+<l:l i="90">ị</l:l>
+<l:l i="100">J</l:l>
+<l:l i="100">j</l:l>
+<l:l i="100">Ĵ</l:l>
+<l:l i="100">ĵ</l:l>
+<l:l i="100">ǰ</l:l>
+<l:l i="100">ʝ</l:l>
+<l:l i="110">K</l:l>
+<l:l i="110">k</l:l>
+<l:l i="110">Ķ</l:l>
+<l:l i="110">ķ</l:l>
+<l:l i="110">Ƙ</l:l>
+<l:l i="110">ƙ</l:l>
+<l:l i="110">Ǩ</l:l>
+<l:l i="110">ǩ</l:l>
+<l:l i="110">Ḱ</l:l>
+<l:l i="110">ḱ</l:l>
+<l:l i="110">Ḳ</l:l>
+<l:l i="110">ḳ</l:l>
+<l:l i="110">Ḵ</l:l>
+<l:l i="110">ḵ</l:l>
+<l:l i="120">L</l:l>
+<l:l i="120">l</l:l>
+<l:l i="120">Ĺ</l:l>
+<l:l i="120">ĺ</l:l>
+<l:l i="120">Ļ</l:l>
+<l:l i="120">ļ</l:l>
+<l:l i="120">Ľ</l:l>
+<l:l i="120">ľ</l:l>
+<l:l i="120">Ŀ</l:l>
+<l:l i="120">ŀ</l:l>
+<l:l i="120">Ł</l:l>
+<l:l i="120">ł</l:l>
+<l:l i="120">ƚ</l:l>
+<l:l i="120">Lj</l:l>
+<l:l i="120">ȴ</l:l>
+<l:l i="120">ɫ</l:l>
+<l:l i="120">ɬ</l:l>
+<l:l i="120">ɭ</l:l>
+<l:l i="120">Ḷ</l:l>
+<l:l i="120">ḷ</l:l>
+<l:l i="120">Ḹ</l:l>
+<l:l i="120">ḹ</l:l>
+<l:l i="120">Ḻ</l:l>
+<l:l i="120">ḻ</l:l>
+<l:l i="120">Ḽ</l:l>
+<l:l i="120">ḽ</l:l>
+<l:l i="130">M</l:l>
+<l:l i="130">m</l:l>
+<l:l i="130">ɱ</l:l>
+<l:l i="130">Ḿ</l:l>
+<l:l i="130">ḿ</l:l>
+<l:l i="130">Ṁ</l:l>
+<l:l i="130">ṁ</l:l>
+<l:l i="130">Ṃ</l:l>
+<l:l i="130">ṃ</l:l>
+<l:l i="140">N</l:l>
+<l:l i="140">n</l:l>
+<l:l i="140">Ñ</l:l>
+<l:l i="140">ñ</l:l>
+<l:l i="140">Ń</l:l>
+<l:l i="140">ń</l:l>
+<l:l i="140">Ņ</l:l>
+<l:l i="140">ņ</l:l>
+<l:l i="140">Ň</l:l>
+<l:l i="140">ň</l:l>
+<l:l i="140">Ɲ</l:l>
+<l:l i="140">ɲ</l:l>
+<l:l i="140">ƞ</l:l>
+<l:l i="140">Ƞ</l:l>
+<l:l i="140">Nj</l:l>
+<l:l i="140">Ǹ</l:l>
+<l:l i="140">ǹ</l:l>
+<l:l i="140">ȵ</l:l>
+<l:l i="140">ɳ</l:l>
+<l:l i="140">Ṅ</l:l>
+<l:l i="140">ṅ</l:l>
+<l:l i="140">Ṇ</l:l>
+<l:l i="140">ṇ</l:l>
+<l:l i="140">Ṉ</l:l>
+<l:l i="140">ṉ</l:l>
+<l:l i="140">Ṋ</l:l>
+<l:l i="140">ṋ</l:l>
+<l:l i="150">O</l:l>
+<l:l i="150">o</l:l>
+<l:l i="150">Ò</l:l>
+<l:l i="150">ò</l:l>
+<l:l i="150">Ó</l:l>
+<l:l i="150">ó</l:l>
+<l:l i="150">Ô</l:l>
+<l:l i="150">ô</l:l>
+<l:l i="150">Õ</l:l>
+<l:l i="150">õ</l:l>
+<l:l i="150">Ö</l:l>
+<l:l i="150">ö</l:l>
+<l:l i="150">Ø</l:l>
+<l:l i="150">ø</l:l>
+<l:l i="150">Ō</l:l>
+<l:l i="150">ō</l:l>
+<l:l i="150">Ŏ</l:l>
+<l:l i="150">ŏ</l:l>
+<l:l i="150">Ő</l:l>
+<l:l i="150">ő</l:l>
+<l:l i="150">Ɵ</l:l>
+<l:l i="150">Ơ</l:l>
+<l:l i="150">ơ</l:l>
+<l:l i="150">Ǒ</l:l>
+<l:l i="150">ǒ</l:l>
+<l:l i="150">Ǫ</l:l>
+<l:l i="150">ǫ</l:l>
+<l:l i="150">Ǭ</l:l>
+<l:l i="150">ǭ</l:l>
+<l:l i="150">Ǿ</l:l>
+<l:l i="150">ǿ</l:l>
+<l:l i="150">Ȍ</l:l>
+<l:l i="150">ȍ</l:l>
+<l:l i="150">Ȏ</l:l>
+<l:l i="150">ȏ</l:l>
+<l:l i="150">Ȫ</l:l>
+<l:l i="150">ȫ</l:l>
+<l:l i="150">Ȭ</l:l>
+<l:l i="150">ȭ</l:l>
+<l:l i="150">Ȯ</l:l>
+<l:l i="150">ȯ</l:l>
+<l:l i="150">Ȱ</l:l>
+<l:l i="150">ȱ</l:l>
+<l:l i="150">Ṍ</l:l>
+<l:l i="150">ṍ</l:l>
+<l:l i="150">Ṏ</l:l>
+<l:l i="150">ṏ</l:l>
+<l:l i="150">Ṑ</l:l>
+<l:l i="150">ṑ</l:l>
+<l:l i="150">Ṓ</l:l>
+<l:l i="150">ṓ</l:l>
+<l:l i="150">Ọ</l:l>
+<l:l i="150">ọ</l:l>
+<l:l i="150">Ỏ</l:l>
+<l:l i="150">ỏ</l:l>
+<l:l i="150">Ố</l:l>
+<l:l i="150">ố</l:l>
+<l:l i="150">Ồ</l:l>
+<l:l i="150">ồ</l:l>
+<l:l i="150">Ổ</l:l>
+<l:l i="150">ổ</l:l>
+<l:l i="150">Ỗ</l:l>
+<l:l i="150">ỗ</l:l>
+<l:l i="150">Ộ</l:l>
+<l:l i="150">ộ</l:l>
+<l:l i="150">Ớ</l:l>
+<l:l i="150">ớ</l:l>
+<l:l i="150">Ờ</l:l>
+<l:l i="150">ờ</l:l>
+<l:l i="150">Ở</l:l>
+<l:l i="150">ở</l:l>
+<l:l i="150">Ỡ</l:l>
+<l:l i="150">ỡ</l:l>
+<l:l i="150">Ợ</l:l>
+<l:l i="150">ợ</l:l>
+<l:l i="160">P</l:l>
+<l:l i="160">p</l:l>
+<l:l i="160">Ƥ</l:l>
+<l:l i="160">ƥ</l:l>
+<l:l i="160">Ṕ</l:l>
+<l:l i="160">ṕ</l:l>
+<l:l i="160">Ṗ</l:l>
+<l:l i="160">ṗ</l:l>
+<l:l i="170">Q</l:l>
+<l:l i="170">q</l:l>
+<l:l i="170">ʠ</l:l>
+<l:l i="180">R</l:l>
+<l:l i="180">r</l:l>
+<l:l i="180">Ŕ</l:l>
+<l:l i="180">ŕ</l:l>
+<l:l i="180">Ŗ</l:l>
+<l:l i="180">ŗ</l:l>
+<l:l i="180">Ř</l:l>
+<l:l i="180">ř</l:l>
+<l:l i="180">Ȑ</l:l>
+<l:l i="180">ȑ</l:l>
+<l:l i="180">Ȓ</l:l>
+<l:l i="180">ȓ</l:l>
+<l:l i="180">ɼ</l:l>
+<l:l i="180">ɽ</l:l>
+<l:l i="180">ɾ</l:l>
+<l:l i="180">Ṙ</l:l>
+<l:l i="180">ṙ</l:l>
+<l:l i="180">Ṛ</l:l>
+<l:l i="180">ṛ</l:l>
+<l:l i="180">Ṝ</l:l>
+<l:l i="180">ṝ</l:l>
+<l:l i="180">Ṟ</l:l>
+<l:l i="180">ṟ</l:l>
+<l:l i="190">S</l:l>
+<l:l i="190">s</l:l>
+<l:l i="190">Ś</l:l>
+<l:l i="190">ś</l:l>
+<l:l i="190">Ŝ</l:l>
+<l:l i="190">ŝ</l:l>
+<l:l i="190">Ş</l:l>
+<l:l i="190">ş</l:l>
+<l:l i="190">Š</l:l>
+<l:l i="190">š</l:l>
+<l:l i="190">Ș</l:l>
+<l:l i="190">ș</l:l>
+<l:l i="190">ʂ</l:l>
+<l:l i="190">Ṡ</l:l>
+<l:l i="190">ṡ</l:l>
+<l:l i="190">Ṣ</l:l>
+<l:l i="190">ṣ</l:l>
+<l:l i="190">Ṥ</l:l>
+<l:l i="190">ṥ</l:l>
+<l:l i="190">Ṧ</l:l>
+<l:l i="190">ṧ</l:l>
+<l:l i="190">Ṩ</l:l>
+<l:l i="190">ṩ</l:l>
+<l:l i="200">T</l:l>
+<l:l i="200">t</l:l>
+<l:l i="200">Ţ</l:l>
+<l:l i="200">ţ</l:l>
+<l:l i="200">Ť</l:l>
+<l:l i="200">ť</l:l>
+<l:l i="200">Ŧ</l:l>
+<l:l i="200">ŧ</l:l>
+<l:l i="200">ƫ</l:l>
+<l:l i="200">Ƭ</l:l>
+<l:l i="200">ƭ</l:l>
+<l:l i="200">Ʈ</l:l>
+<l:l i="200">ʈ</l:l>
+<l:l i="200">Ț</l:l>
+<l:l i="200">ț</l:l>
+<l:l i="200">ȶ</l:l>
+<l:l i="200">Ṫ</l:l>
+<l:l i="200">ṫ</l:l>
+<l:l i="200">Ṭ</l:l>
+<l:l i="200">ṭ</l:l>
+<l:l i="200">Ṯ</l:l>
+<l:l i="200">ṯ</l:l>
+<l:l i="200">Ṱ</l:l>
+<l:l i="200">ṱ</l:l>
+<l:l i="200">ẗ</l:l>
+<l:l i="210">U</l:l>
+<l:l i="210">u</l:l>
+<l:l i="210">Ù</l:l>
+<l:l i="210">ù</l:l>
+<l:l i="210">Ú</l:l>
+<l:l i="210">ú</l:l>
+<l:l i="210">Û</l:l>
+<l:l i="210">û</l:l>
+<l:l i="210">Ü</l:l>
+<l:l i="210">ü</l:l>
+<l:l i="210">Ũ</l:l>
+<l:l i="210">ũ</l:l>
+<l:l i="210">Ū</l:l>
+<l:l i="210">ū</l:l>
+<l:l i="210">Ŭ</l:l>
+<l:l i="210">ŭ</l:l>
+<l:l i="210">Ů</l:l>
+<l:l i="210">ů</l:l>
+<l:l i="210">Ű</l:l>
+<l:l i="210">ű</l:l>
+<l:l i="210">Ų</l:l>
+<l:l i="210">ų</l:l>
+<l:l i="210">Ư</l:l>
+<l:l i="210">ư</l:l>
+<l:l i="210">Ǔ</l:l>
+<l:l i="210">ǔ</l:l>
+<l:l i="210">Ǖ</l:l>
+<l:l i="210">ǖ</l:l>
+<l:l i="210">Ǘ</l:l>
+<l:l i="210">ǘ</l:l>
+<l:l i="210">Ǚ</l:l>
+<l:l i="210">ǚ</l:l>
+<l:l i="210">Ǜ</l:l>
+<l:l i="210">ǜ</l:l>
+<l:l i="210">Ȕ</l:l>
+<l:l i="210">ȕ</l:l>
+<l:l i="210">Ȗ</l:l>
+<l:l i="210">ȗ</l:l>
+<l:l i="210">Ṳ</l:l>
+<l:l i="210">ṳ</l:l>
+<l:l i="210">Ṵ</l:l>
+<l:l i="210">ṵ</l:l>
+<l:l i="210">Ṷ</l:l>
+<l:l i="210">ṷ</l:l>
+<l:l i="210">Ṹ</l:l>
+<l:l i="210">ṹ</l:l>
+<l:l i="210">Ṻ</l:l>
+<l:l i="210">ṻ</l:l>
+<l:l i="210">Ụ</l:l>
+<l:l i="210">ụ</l:l>
+<l:l i="210">Ủ</l:l>
+<l:l i="210">ủ</l:l>
+<l:l i="210">Ứ</l:l>
+<l:l i="210">ứ</l:l>
+<l:l i="210">Ừ</l:l>
+<l:l i="210">ừ</l:l>
+<l:l i="210">Ử</l:l>
+<l:l i="210">ử</l:l>
+<l:l i="210">Ữ</l:l>
+<l:l i="210">ữ</l:l>
+<l:l i="210">Ự</l:l>
+<l:l i="210">ự</l:l>
+<l:l i="220">V</l:l>
+<l:l i="220">v</l:l>
+<l:l i="220">Ʋ</l:l>
+<l:l i="220">ʋ</l:l>
+<l:l i="220">Ṽ</l:l>
+<l:l i="220">ṽ</l:l>
+<l:l i="220">Ṿ</l:l>
+<l:l i="220">ṿ</l:l>
+<l:l i="230">W</l:l>
+<l:l i="230">w</l:l>
+<l:l i="230">Ŵ</l:l>
+<l:l i="230">ŵ</l:l>
+<l:l i="230">Ẁ</l:l>
+<l:l i="230">ẁ</l:l>
+<l:l i="230">Ẃ</l:l>
+<l:l i="230">ẃ</l:l>
+<l:l i="230">Ẅ</l:l>
+<l:l i="230">ẅ</l:l>
+<l:l i="230">Ẇ</l:l>
+<l:l i="230">ẇ</l:l>
+<l:l i="230">Ẉ</l:l>
+<l:l i="230">ẉ</l:l>
+<l:l i="230">ẘ</l:l>
+<l:l i="240">X</l:l>
+<l:l i="240">x</l:l>
+<l:l i="240">Ẋ</l:l>
+<l:l i="240">ẋ</l:l>
+<l:l i="240">Ẍ</l:l>
+<l:l i="240">ẍ</l:l>
+<l:l i="250">Y</l:l>
+<l:l i="250">y</l:l>
+<l:l i="250">Ý</l:l>
+<l:l i="250">ý</l:l>
+<l:l i="250">ÿ</l:l>
+<l:l i="250">Ÿ</l:l>
+<l:l i="250">Ŷ</l:l>
+<l:l i="250">ŷ</l:l>
+<l:l i="250">Ƴ</l:l>
+<l:l i="250">ƴ</l:l>
+<l:l i="250">Ȳ</l:l>
+<l:l i="250">ȳ</l:l>
+<l:l i="250">Ẏ</l:l>
+<l:l i="250">ẏ</l:l>
+<l:l i="250">ẙ</l:l>
+<l:l i="250">Ỳ</l:l>
+<l:l i="250">ỳ</l:l>
+<l:l i="250">Ỵ</l:l>
+<l:l i="250">ỵ</l:l>
+<l:l i="250">Ỷ</l:l>
+<l:l i="250">ỷ</l:l>
+<l:l i="250">Ỹ</l:l>
+<l:l i="250">ỹ</l:l>
+<l:l i="260">Z</l:l>
+<l:l i="260">z</l:l>
+<l:l i="260">Ź</l:l>
+<l:l i="260">ź</l:l>
+<l:l i="260">Ż</l:l>
+<l:l i="260">ż</l:l>
+<l:l i="260">Ž</l:l>
+<l:l i="260">ž</l:l>
+<l:l i="260">Ƶ</l:l>
+<l:l i="260">ƶ</l:l>
+<l:l i="260">Ȥ</l:l>
+<l:l i="260">ȥ</l:l>
+<l:l i="260">ʐ</l:l>
+<l:l i="260">ʑ</l:l>
+<l:l i="260">Ẑ</l:l>
+<l:l i="260">ẑ</l:l>
+<l:l i="260">Ẓ</l:l>
+<l:l i="260">ẓ</l:l>
+<l:l i="260">Ẕ</l:l>
+<l:l i="260">ẕ</l:l>
+</l:letters>
+</l:l10n>
diff --git a/docs/xsl-generic/highlighting/c-hl.xml b/docs/xsl-generic/highlighting/c-hl.xml
new file mode 100644
index 00000000..ad86bb3f
--- /dev/null
+++ b/docs/xsl-generic/highlighting/c-hl.xml
@@ -0,0 +1,105 @@
+<?xml version='1.0'?>
+<highlighters>
+
+<highlighter type='multiline-comment'>
+ <start>/*</start>
+ <end>*/</end>
+</highlighter>
+
+<highlighter type='oneline-comment'>
+ //
+</highlighter>
+
+<highlighter type='oneline-comment'>
+ #
+</highlighter>
+
+<highlighter type='string'>
+ <string>"</string>
+ <escape>\</escape>
+</highlighter>
+
+<highlighter type='string'>
+ <string>'</string>
+ <escape>\</escape>
+</highlighter>
+
+<highlighter type='heredoc'>
+ <start>&lt;&lt;&lt;</start>
+</highlighter>
+
+<highlighter type='keywords'>
+ <keyword>and</keyword>
+ <keyword>auto</keyword>
+ <keyword>break</keyword>
+ <keyword>case</keyword>
+ <keyword>char</keyword>
+ <keyword>class</keyword>
+ <keyword>__CLASS__</keyword>
+ <keyword>const</keyword>
+ <keyword>continue</keyword>
+ <keyword>declare</keyword>
+ <keyword>default</keyword>
+ <keyword>do</keyword>
+ <keyword>double</keyword>
+ <keyword>else</keyword>
+ <keyword>enum</keyword>
+ <keyword>exit</keyword>
+ <keyword>extern</keyword>
+ <keyword>__FILE__</keyword>
+ <keyword>float</keyword>
+ <keyword>for</keyword>
+ <keyword>global</keyword>
+ <keyword>goto</keyword>
+ <keyword>if</keyword>
+ <keyword>include</keyword>
+ <keyword>int</keyword>
+ <keyword>__LINE__</keyword>
+ <keyword>long</keyword>
+ <keyword>new</keyword>
+ <keyword>or</keyword>
+ <keyword>private</keyword>
+ <keyword>protected</keyword>
+ <keyword>public</keyword>
+ <keyword>register</keyword>
+ <keyword>return</keyword>
+ <keyword>short</keyword>
+ <keyword>signed</keyword>
+ <keyword>sizeof</keyword>
+ <keyword>static</keyword>
+ <keyword>struct</keyword>
+ <keyword>switch</keyword>
+ <keyword>typedef</keyword>
+ <keyword>union</keyword>
+ <keyword>unsigned</keyword>
+ <keyword>void</keyword>
+ <keyword>volatile</keyword>
+ <keyword>while</keyword>
+ <ignoreCase/>
+</highlighter>
+
+</highlighters>
+<!--
+
+Copyright (c) 2005 Michal Molhanec
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+ distribution.
+
+--> \ No newline at end of file
diff --git a/docs/xsl-generic/highlighting/common.xsl b/docs/xsl-generic/highlighting/common.xsl
new file mode 100644
index 00000000..32f1bbcf
--- /dev/null
+++ b/docs/xsl-generic/highlighting/common.xsl
@@ -0,0 +1,62 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:hl="java:net.sf.xslthl.ConnectorSaxon6"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl hl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: common.xsl 7266 2007-08-22 11:58:42Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ and other information.
+
+ ******************************************************************** -->
+
+<!-- You can override this template to do more complex mapping of
+ language attribute to highlighter language ID (see xslthl-config.xml) -->
+<xsl:template name="language.to.xslthl">
+ <xsl:param name="context"/>
+
+ <xsl:choose>
+ <xsl:when test="$context/@language != ''">
+ <xsl:value-of select="$context/@language"/>
+ </xsl:when>
+ <xsl:when test="$highlight.default.language != ''">
+ <xsl:value-of select="$highlight.default.language"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="apply-highlighting">
+ <xsl:choose>
+ <!-- Do we want syntax highlighting -->
+ <xsl:when test="$highlight.source != 0 and function-available('hl:highlight')">
+ <xsl:variable name="language">
+ <xsl:call-template name="language.to.xslthl">
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$language != ''">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:apply-templates select="hl:highlight($language, exsl:node-set($content))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- No syntax highlighting -->
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/highlighting/delphi-hl.xml b/docs/xsl-generic/highlighting/delphi-hl.xml
new file mode 100644
index 00000000..3fab5c2e
--- /dev/null
+++ b/docs/xsl-generic/highlighting/delphi-hl.xml
@@ -0,0 +1,174 @@
+<?xml version='1.0'?>
+<highlighters>
+
+<highlighter type='multiline-comment'>
+ <start>{</start>
+ <end>}</end>
+</highlighter>
+
+<highlighter type='multiline-comment'>
+ <start>(*</start>
+ <end>*)</end>
+</highlighter>
+
+<highlighter type='oneline-comment'>
+ //
+</highlighter>
+
+<highlighter type='string'>
+ <string>'</string>
+ <doubleEscapes/>
+</highlighter>
+
+<highlighter type='keywords'>
+
+ <!-- Reserved words -->
+ <keyword>and</keyword>
+ <keyword>else</keyword>
+ <keyword>inherited</keyword>
+ <keyword>packed</keyword>
+ <keyword>then</keyword>
+ <keyword>array</keyword>
+ <keyword>end</keyword>
+ <keyword>initialization</keyword>
+ <keyword>procedure</keyword>
+ <keyword>threadvar</keyword>
+ <keyword>as</keyword>
+ <keyword>except</keyword>
+ <keyword>inline</keyword>
+ <keyword>program</keyword>
+ <keyword>to</keyword>
+ <keyword>asm</keyword>
+ <keyword>exports</keyword>
+ <keyword>interface</keyword>
+ <keyword>property</keyword>
+ <keyword>try</keyword>
+ <keyword>begin</keyword>
+ <keyword>file</keyword>
+ <keyword>is</keyword>
+ <keyword>raise</keyword>
+ <keyword>type</keyword>
+ <keyword>case</keyword>
+ <keyword>final</keyword>
+ <keyword>label</keyword>
+ <keyword>record</keyword>
+ <keyword>unit</keyword>
+ <keyword>class</keyword>
+ <keyword>finalization</keyword>
+ <keyword>library</keyword>
+ <keyword>repeat</keyword>
+ <keyword>unsafe</keyword>
+ <keyword>const</keyword>
+ <keyword>finally</keyword>
+ <keyword>mod</keyword>
+ <keyword>resourcestring</keyword>
+ <keyword>until</keyword>
+ <keyword>constructor</keyword>
+ <keyword>for</keyword>
+ <keyword>nil</keyword>
+ <keyword>sealed</keyword>
+ <keyword>uses</keyword>
+ <keyword>destructor</keyword>
+ <keyword>function</keyword>
+ <keyword>not</keyword>
+ <keyword>set</keyword>
+ <keyword>var</keyword>
+ <keyword>dispinterface</keyword>
+ <keyword>goto</keyword>
+ <keyword>object</keyword>
+ <keyword>shl</keyword>
+ <keyword>while</keyword>
+ <keyword>div</keyword>
+ <keyword>if</keyword>
+ <keyword>of</keyword>
+ <keyword>shr</keyword>
+ <keyword>with</keyword>
+ <keyword>do</keyword>
+ <keyword>implementation</keyword>
+ <keyword>or</keyword>
+ <keyword>static</keyword>
+ <keyword>xor</keyword>
+ <keyword>downto</keyword>
+ <keyword>in</keyword>
+ <keyword>out</keyword>
+ <keyword>string</keyword>
+
+ <!-- Special meaning -->
+ <keyword>at</keyword>
+ <keyword>on</keyword>
+
+ <!-- Directives -->
+ <keyword>absolute</keyword>
+ <keyword>dynamic</keyword>
+ <keyword>local</keyword>
+ <keyword>platform</keyword>
+ <keyword>requires</keyword>
+ <keyword>abstract</keyword>
+ <keyword>export</keyword>
+ <keyword>message</keyword>
+ <keyword>private</keyword>
+ <keyword>resident</keyword>
+ <keyword>assembler</keyword>
+ <keyword>external</keyword>
+ <keyword>name</keyword>
+ <keyword>protected</keyword>
+ <keyword>safecall</keyword>
+ <keyword>automated</keyword>
+ <keyword>far</keyword>
+ <keyword>near</keyword>
+ <keyword>public</keyword>
+ <keyword>stdcall</keyword>
+ <keyword>cdecl</keyword>
+ <keyword>forward</keyword>
+ <keyword>nodefault</keyword>
+ <keyword>published</keyword>
+ <keyword>stored</keyword>
+ <keyword>contains</keyword>
+ <keyword>implements</keyword>
+ <keyword>overload</keyword>
+ <keyword>read</keyword>
+ <keyword>varargs</keyword>
+ <keyword>default</keyword>
+ <keyword>index</keyword>
+ <keyword>override</keyword>
+ <keyword>readonly</keyword>
+ <keyword>virtual</keyword>
+ <keyword>deprecated</keyword>
+ <keyword>inline</keyword>
+ <keyword>package</keyword>
+ <keyword>register</keyword>
+ <keyword>write</keyword>
+ <keyword>dispid</keyword>
+ <keyword>library</keyword>
+ <keyword>pascal</keyword>
+ <keyword>reintroduce</keyword>
+ <keyword>writeonly</keyword>
+
+ <ignoreCase/>
+</highlighter>
+
+</highlighters>
+<!--
+
+Copyright (c) 2005 Michal Molhanec
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+ distribution.
+
+-->
diff --git a/docs/xsl-generic/highlighting/ini-hl.xml b/docs/xsl-generic/highlighting/ini-hl.xml
new file mode 100644
index 00000000..dbebfa7d
--- /dev/null
+++ b/docs/xsl-generic/highlighting/ini-hl.xml
@@ -0,0 +1,43 @@
+<?xml version='1.0'?>
+<highlighters>
+
+<wholehighlighter type='regex'>
+ <pattern>(?m)(;.*)$</pattern>
+ <style>comment</style>
+</wholehighlighter>
+
+<wholehighlighter type='regex'>
+ <pattern>(?m)^(\[.+\]\s*)$</pattern>
+ <style>section</style>
+</wholehighlighter>
+
+<wholehighlighter type='regex'>
+ <pattern>(?m)^(.+=)</pattern>
+ <style>keyword</style>
+</wholehighlighter>
+
+</highlighters>
+<!--
+
+Copyright (c) 2005 Michal Molhanec
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+ distribution.
+
+-->
diff --git a/docs/xsl-generic/highlighting/java-hl.xml b/docs/xsl-generic/highlighting/java-hl.xml
new file mode 100644
index 00000000..419b7cb8
--- /dev/null
+++ b/docs/xsl-generic/highlighting/java-hl.xml
@@ -0,0 +1,98 @@
+<?xml version='1.0'?>
+<highlighters>
+
+<highlighter type='multiline-comment'>
+ <start>/*</start>
+ <end>*/</end>
+</highlighter>
+
+<highlighter type='oneline-comment'>
+ //
+</highlighter>
+
+<highlighter type='string'>
+ <string>"</string>
+ <escape>\</escape>
+</highlighter>
+
+<highlighter type='string'>
+ <string>'</string>
+ <escape>\</escape>
+</highlighter>
+
+<highlighter type='keywords'>
+ <keyword>abstract</keyword>
+ <keyword>boolean</keyword>
+ <keyword>break</keyword>
+ <keyword>byte</keyword>
+ <keyword>case</keyword>
+ <keyword>catch</keyword>
+ <keyword>char</keyword>
+ <keyword>class</keyword>
+ <keyword>const</keyword>
+ <keyword>continue</keyword>
+ <keyword>default</keyword>
+ <keyword>do</keyword>
+ <keyword>double</keyword>
+ <keyword>else</keyword>
+ <keyword>extends</keyword>
+ <keyword>final</keyword>
+ <keyword>finally</keyword>
+ <keyword>float</keyword>
+ <keyword>for</keyword>
+ <keyword>goto</keyword>
+ <keyword>if</keyword>
+ <keyword>implements</keyword>
+ <keyword>import</keyword>
+ <keyword>instanceof</keyword>
+ <keyword>int</keyword>
+ <keyword>interface</keyword>
+ <keyword>long</keyword>
+ <keyword>native</keyword>
+ <keyword>new</keyword>
+ <keyword>package</keyword>
+ <keyword>private</keyword>
+ <keyword>protected</keyword>
+ <keyword>public</keyword>
+ <keyword>return</keyword>
+ <keyword>short</keyword>
+ <keyword>static</keyword>
+ <keyword>strictfp</keyword>
+ <keyword>super</keyword>
+ <keyword>switch</keyword>
+ <keyword>synchronized</keyword>
+ <keyword>this</keyword>
+ <keyword>throw</keyword>
+ <keyword>throws</keyword>
+ <keyword>transient</keyword>
+ <keyword>try</keyword>
+ <keyword>void</keyword>
+ <keyword>volatile</keyword>
+ <keyword>while</keyword>
+</highlighter>
+
+</highlighters>
+<!--
+
+Copyright (c) 2005 Michal Molhanec
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+ distribution.
+
+-->
diff --git a/docs/xsl-generic/highlighting/m2-hl.xml b/docs/xsl-generic/highlighting/m2-hl.xml
new file mode 100644
index 00000000..2d2c7693
--- /dev/null
+++ b/docs/xsl-generic/highlighting/m2-hl.xml
@@ -0,0 +1,86 @@
+<?xml version='1.0'?>
+<highlighters>
+
+<highlighter type='nested-multiline-comment'>
+ <start>(*</start>
+ <end>*)</end>
+</highlighter>
+
+<highlighter type='string'>
+ <string>"</string>
+</highlighter>
+
+<highlighter type='string'>
+ <string>'</string>
+</highlighter>
+
+<highlighter type='keywords'>
+ <keyword>and</keyword>
+ <keyword>array</keyword>
+ <keyword>begin</keyword>
+ <keyword>by</keyword>
+ <keyword>case</keyword>
+ <keyword>const</keyword>
+ <keyword>definition</keyword>
+ <keyword>div</keyword>
+ <keyword>do</keyword>
+ <keyword>else</keyword>
+ <keyword>elsif</keyword>
+ <keyword>end</keyword>
+ <keyword>exit</keyword>
+ <keyword>export</keyword>
+ <keyword>for</keyword>
+ <keyword>from</keyword>
+ <keyword>if</keyword>
+ <keyword>implementation</keyword>
+ <keyword>import</keyword>
+ <keyword>in</keyword>
+ <keyword>loop</keyword>
+ <keyword>mod</keyword>
+ <keyword>module</keyword>
+ <keyword>not</keyword>
+ <keyword>of</keyword>
+ <keyword>or</keyword>
+ <keyword>pointer</keyword>
+ <keyword>procedure</keyword>
+ <keyword>qualified</keyword>
+ <keyword>record</keyword>
+ <keyword>repeat</keyword>
+ <keyword>return</keyword>
+ <keyword>set</keyword>
+ <keyword>then</keyword>
+ <keyword>to</keyword>
+ <keyword>type</keyword>
+ <keyword>until</keyword>
+ <keyword>var</keyword>
+ <keyword>while</keyword>
+ <keyword>with</keyword>
+
+ <ignoreCase/>
+</highlighter>
+
+</highlighters>
+<!--
+
+Copyright (c) 2005 Michal Molhanec
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+ distribution.
+
+-->
diff --git a/docs/xsl-generic/highlighting/myxml-hl.xml b/docs/xsl-generic/highlighting/myxml-hl.xml
new file mode 100644
index 00000000..495d4e87
--- /dev/null
+++ b/docs/xsl-generic/highlighting/myxml-hl.xml
@@ -0,0 +1,131 @@
+<?xml version='1.0'?>
+<highlighters>
+
+<wholehighlighter type='xml'>
+ <elementSet>
+ <style>html</style>
+ <element>A</element>
+ <element>ABBR</element>
+ <element>ACRONYM</element>
+ <element>ADDRESS</element>
+ <element>APPLET</element>
+ <element>AREA</element>
+ <element>B</element>
+ <element>BASE</element>
+ <element>BASEFONT</element>
+ <element>BDO</element>
+ <element>BIG</element>
+ <element>BLOCKQUOTE</element>
+ <element>BODY</element>
+ <element>BR</element>
+ <element>BUTTON</element>
+ <element>CAPTION</element>
+ <element>CENTER</element>
+ <element>CITE</element>
+ <element>CODE</element>
+ <element>COL</element>
+ <element>COLGROUP</element>
+ <element>DD</element>
+ <element>DEL</element>
+ <element>DFN</element>
+ <element>DIR</element>
+ <element>DIV</element>
+ <element>DL</element>
+ <element>DT</element>
+ <element>EM</element>
+ <element>FIELDSET</element>
+ <element>FONT</element>
+ <element>FORM</element>
+ <element>FRAME</element>
+ <element>FRAMESET</element>
+ <element>H1</element>
+ <element>H2</element>
+ <element>H3</element>
+ <element>H4</element>
+ <element>H5</element>
+ <element>H6</element>
+ <element>HEAD</element>
+ <element>HR</element>
+ <element>HTML</element>
+ <element>I</element>
+ <element>IFRAME</element>
+ <element>IMG</element>
+ <element>INPUT</element>
+ <element>INS</element>
+ <element>ISINDEX</element>
+ <element>KBD</element>
+ <element>LABEL</element>
+ <element>LEGEND</element>
+ <element>LI</element>
+ <element>LINK</element>
+ <element>MAP</element>
+ <element>MENU</element>
+ <element>META</element>
+ <element>NOFRAMES</element>
+ <element>NOSCRIPT</element>
+ <element>OBJECT</element>
+ <element>OL</element>
+ <element>OPTGROUP</element>
+ <element>OPTION</element>
+ <element>P</element>
+ <element>PARAM</element>
+ <element>PRE</element>
+ <element>Q</element>
+ <element>S</element>
+ <element>SAMP</element>
+ <element>SCRIPT</element>
+ <element>SELECT</element>
+ <element>SMALL</element>
+ <element>SPAN</element>
+ <element>STRIKE</element>
+ <element>STRONG</element>
+ <element>STYLE</element>
+ <element>SUB</element>
+ <element>SUP</element>
+ <element>TABLE</element>
+ <element>TBODY</element>
+ <element>TD</element>
+ <element>TEXTAREA</element>
+ <element>TFOOT</element>
+ <element>TH</element>
+ <element>THEAD</element>
+ <element>TITLE</element>
+ <element>TR</element>
+ <element>TT</element>
+ <element>U</element>
+ <element>UL</element>
+ <element>VAR</element>
+ <element>XMP</element>
+ <ignoreCase/>
+ </elementSet>
+ <elementPrefix>
+ <style>xslt</style>
+ <prefix>xsl:</prefix>
+ </elementPrefix>
+</wholehighlighter>
+
+</highlighters>
+<!--
+
+Copyright (c) 2005 Michal Molhanec
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+ distribution.
+
+-->
diff --git a/docs/xsl-generic/highlighting/php-hl.xml b/docs/xsl-generic/highlighting/php-hl.xml
new file mode 100644
index 00000000..7cd0d6a7
--- /dev/null
+++ b/docs/xsl-generic/highlighting/php-hl.xml
@@ -0,0 +1,127 @@
+<?xml version='1.0'?>
+<highlighters>
+
+<highlighter type='multiline-comment'>
+ <start>/*</start>
+ <end>*/</end>
+</highlighter>
+
+<highlighter type='oneline-comment'>
+ //
+</highlighter>
+
+<highlighter type='oneline-comment'>
+ #
+</highlighter>
+
+<highlighter type='string'>
+ <string>"</string>
+ <escape>\</escape>
+</highlighter>
+
+<highlighter type='string'>
+ <string>'</string>
+ <escape>\</escape>
+</highlighter>
+
+<highlighter type='heredoc'>
+ <start>&lt;&lt;&lt;</start>
+</highlighter>
+
+<highlighter type='keywords'>
+ <keyword>and</keyword>
+ <keyword>or</keyword>
+ <keyword>xor</keyword>
+ <keyword>__FILE__</keyword>
+ <keyword>exception</keyword>
+ <keyword>__LINE__</keyword>
+ <keyword>array</keyword>
+ <keyword>as</keyword>
+ <keyword>break</keyword>
+ <keyword>case</keyword>
+ <keyword>class</keyword>
+ <keyword>const</keyword>
+ <keyword>continue</keyword>
+ <keyword>declare</keyword>
+ <keyword>default</keyword>
+ <keyword>die</keyword>
+ <keyword>do</keyword>
+ <keyword>echo</keyword>
+ <keyword>else</keyword>
+ <keyword>elseif</keyword>
+ <keyword>empty</keyword>
+ <keyword>enddeclare</keyword>
+ <keyword>endfor</keyword>
+ <keyword>endforeach</keyword>
+ <keyword>endif</keyword>
+ <keyword>endswitch</keyword>
+ <keyword>endwhile</keyword>
+ <keyword>eval</keyword>
+ <keyword>exit</keyword>
+ <keyword>extends</keyword>
+ <keyword>for</keyword>
+ <keyword>foreach</keyword>
+ <keyword>function</keyword>
+ <keyword>global</keyword>
+ <keyword>if</keyword>
+ <keyword>include</keyword>
+ <keyword>include_once</keyword>
+ <keyword>isset</keyword>
+ <keyword>list</keyword>
+ <keyword>new</keyword>
+ <keyword>print</keyword>
+ <keyword>require</keyword>
+ <keyword>require_once</keyword>
+ <keyword>return</keyword>
+ <keyword>static</keyword>
+ <keyword>switch</keyword>
+ <keyword>unset</keyword>
+ <keyword>use</keyword>
+ <keyword>var</keyword>
+ <keyword>while</keyword>
+ <keyword>__FUNCTION__</keyword>
+ <keyword>__CLASS__</keyword>
+ <keyword>__METHOD__</keyword>
+ <keyword>final</keyword>
+ <keyword>php_user_filter</keyword>
+ <keyword>interface</keyword>
+ <keyword>implements</keyword>
+ <keyword>extends</keyword>
+ <keyword>public</keyword>
+ <keyword>private</keyword>
+ <keyword>protected</keyword>
+ <keyword>abstract</keyword>
+ <keyword>clone</keyword>
+ <keyword>try</keyword>
+ <keyword>catch</keyword>
+ <keyword>throw</keyword>
+ <keyword>cfunction</keyword>
+ <keyword>old_function</keyword>
+ <ignoreCase/>
+</highlighter>
+
+</highlighters>
+<!--
+
+Copyright (c) 2005 Michal Molhanec
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+ distribution.
+
+-->
diff --git a/docs/xsl-generic/highlighting/xslthl-config.xml b/docs/xsl-generic/highlighting/xslthl-config.xml
new file mode 100644
index 00000000..7c77f6fc
--- /dev/null
+++ b/docs/xsl-generic/highlighting/xslthl-config.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0'?>
+<xslthl-config>
+ <highlighter id='java' file='./java-hl.xml' />
+ <highlighter id='delphi' file='./delphi-hl.xml'/>
+ <highlighter id='ini' file='./ini-hl.xml' />
+ <highlighter id='php' file='./php-hl.xml' />
+ <highlighter id='myxml' file='./myxml-hl.xml' />
+ <highlighter id='m2' file='./m2-hl.xml' />
+ <highlighter id='c' file='./c-hl.xml' />
+ <namespace prefix="xslthl" uri="http://xslthl.sf.net" />
+</xslthl-config>
diff --git a/docs/xsl-generic/html/admon.xsl b/docs/xsl-generic/html/admon.xsl
new file mode 100644
index 00000000..6a3e9f8e
--- /dev/null
+++ b/docs/xsl-generic/html/admon.xsl
@@ -0,0 +1,132 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: admon.xsl 7072 2007-07-17 16:14:37Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="*" mode="admon.graphic.width">
+ <xsl:param name="node" select="."/>
+ <xsl:text>25</xsl:text>
+</xsl:template>
+
+<xsl:template match="note|important|warning|caution|tip">
+ <xsl:choose>
+ <xsl:when test="$admon.graphics != 0">
+ <xsl:call-template name="graphical.admonition"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="nongraphical.admonition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="admon.graphic">
+ <xsl:param name="node" select="."/>
+ <xsl:value-of select="$admon.graphics.path"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='note'">note</xsl:when>
+ <xsl:when test="local-name($node)='warning'">warning</xsl:when>
+ <xsl:when test="local-name($node)='caution'">caution</xsl:when>
+ <xsl:when test="local-name($node)='tip'">tip</xsl:when>
+ <xsl:when test="local-name($node)='important'">important</xsl:when>
+ <xsl:otherwise>note</xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$admon.graphics.extension"/>
+</xsl:template>
+
+<xsl:template name="graphical.admonition">
+ <xsl:variable name="admon.type">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='note'">Note</xsl:when>
+ <xsl:when test="local-name(.)='warning'">Warning</xsl:when>
+ <xsl:when test="local-name(.)='caution'">Caution</xsl:when>
+ <xsl:when test="local-name(.)='tip'">Tip</xsl:when>
+ <xsl:when test="local-name(.)='important'">Important</xsl:when>
+ <xsl:otherwise>Note</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="alt">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$admon.type"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$admon.style != ''">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$admon.style"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <table border="0">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$admon.type"/>
+ <xsl:if test="title|info/title">
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="(title|info/title)[1]"/>
+ </xsl:if>
+ </xsl:attribute>
+ <tr>
+ <td rowspan="2" align="center" valign="top">
+ <xsl:attribute name="width">
+ <xsl:apply-templates select="." mode="admon.graphic.width"/>
+ </xsl:attribute>
+ <img alt="[{$alt}]">
+ <xsl:attribute name="src">
+ <xsl:call-template name="admon.graphic"/>
+ </xsl:attribute>
+ </img>
+ </td>
+ <th align="left">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:if>
+ </th>
+ </tr>
+ <tr>
+ <td align="left" valign="top">
+ <xsl:apply-templates/>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="nongraphical.admonition">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$admon.style">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$admon.style"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$admon.textlabel != 0 or title or info/title">
+ <h3 class="title">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h3>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="note/title"></xsl:template>
+<xsl:template match="important/title"></xsl:template>
+<xsl:template match="warning/title"></xsl:template>
+<xsl:template match="caution/title"></xsl:template>
+<xsl:template match="tip/title"></xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/annotations.xsl b/docs/xsl-generic/html/annotations.xsl
new file mode 100644
index 00000000..f0106320
--- /dev/null
+++ b/docs/xsl-generic/html/annotations.xsl
@@ -0,0 +1,169 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<xsl:template name="add.annotation.links">
+ <xsl:param name="scripts" select="normalize-space($annotation.js)"/>
+ <xsl:choose>
+ <xsl:when test="contains($scripts, ' ')">
+ <script type="text/javascript" src="{substring-before($scripts, ' ')}"/>
+ <xsl:call-template name="add.annotation.links">
+ <xsl:with-param name="scripts" select="substring-after($scripts, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <script type="text/javascript" src="{$scripts}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="annotation"/>
+
+<xsl:template name="apply-annotations">
+ <xsl:if test="$annotation.support != 0">
+ <!-- do any annotations apply to the context node? -->
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+
+ <xsl:variable name="aids">
+ <xsl:for-each select="//annotation">
+ <xsl:if test="@annotates=$id
+ or starts-with(@annotates, concat($id, ' '))
+ or contains(@annotates, concat(' ', $id, ' '))
+ or substring(@annotates, string-length(@annotates)-3)
+ = concat(' ', $id)">
+ <xsl:value-of select="generate-id()"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="normalize-space(@annotations) != ''">
+ <xsl:call-template name="annotations-pointed-to">
+ <xsl:with-param name="annotations"
+ select="normalize-space(@annotations)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="$aids != ''">
+ <xsl:call-template name="apply-annotations-by-gid">
+ <xsl:with-param name="gids" select="normalize-space($aids)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="annotations-pointed-to">
+ <xsl:param name="annotations"/>
+ <xsl:choose>
+ <xsl:when test="contains($annotations, ' ')">
+ <xsl:variable name='a'
+ select="key('id', substring-before($annotations, ' '))"/>
+ <xsl:if test="$a">
+ <xsl:value-of select="generate-id($a)"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="annotations-pointed-to">
+ <xsl:with-param name="annotations"
+ select="substring-after($annotations, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name='a'
+ select="key('id', $annotations)"/>
+ <xsl:if test="$a">
+ <xsl:value-of select="generate-id($a)"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="apply-annotations-by-gid">
+ <xsl:param name="gids"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($gids, ' ')">
+ <xsl:variable name="gid" select="substring-before($gids, ' ')"/>
+ <xsl:apply-templates select="key('gid', $gid)"
+ mode="annotation-inline"/>
+ <xsl:call-template name="apply-annotations-by-gid">
+ <xsl:with-param name="gids"
+ select="substring-after($gids, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="key('gid', $gids)"
+ mode="annotation-inline"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="annotation" mode="annotation-inline">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[Annotation #</xsl:text>
+ <xsl:number count="annotation" level="any" format="1"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <a href="#annot-{generate-id(.)}" title="{$title}"
+ name="anch-{generate-id(.)}" id="anch-{generate-id(.)}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="onClick">
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.showPopup('anch-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>'); return false;</xsl:text>
+ </xsl:attribute>
+ <img src="{$annotation.graphic.open}" border="0" alt="{$title}"/>
+ </a>
+</xsl:template>
+
+<xsl:template match="annotation" mode="annotation-popup">
+ <div class="annotation-nocss">
+ <p>
+ <a name="annot-{generate-id(.)}"/>
+ <xsl:text>Annotation #</xsl:text>
+ <xsl:number count="annotation" level="any" format="1"/>
+ <xsl:text>:</xsl:text>
+ </p>
+ </div>
+
+ <div id="popup-{generate-id(.)}" class="annotation-popup">
+ <xsl:if test="string-length(.) &gt; 300">
+ <xsl:attribute name="style">width:400px</xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="annotation-title"/>
+ <div class="annotation-body">
+ <xsl:apply-templates select="*[local-name(.) != 'title']"/>
+ </div>
+ <div class="annotation-close">
+ <a href="#" onclick="popup_{generate-id(.)}.hidePopup();return false;">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <img src="{$annotation.graphic.close}" alt="X" border="0"/>
+ </a>
+ </div>
+ </div>
+</xsl:template>
+
+<xsl:template name="annotation-title">
+ <div class="annotation-title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Annotation</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/autoidx-kimber.xsl b/docs/xsl-generic/html/autoidx-kimber.xsl
new file mode 100644
index 00000000..f8d9e3fd
--- /dev/null
+++ b/docs/xsl-generic/html/autoidx-kimber.xsl
@@ -0,0 +1,168 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+
+<!ENTITY primary 'normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = ""]))'>
+<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = ""]))'>
+<!ENTITY tertiary 'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = ""]))'>
+
+<!-- Documents using the kimber index method must have a lang attribute -->
+<!-- Only one of these should be present in the entity -->
+<!ENTITY lang 'concat(/*/@lang, /*/@xml:lang)'>
+
+<!ENTITY scope 'count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))'>
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService"
+ exclude-result-prefixes="k"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kimber.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+<!-- ==================================================================== -->
+<!-- *** THIS MODULE ONLY WORKS WITH SAXON 6 OR SAXON 8 *** -->
+<!-- ==================================================================== -->
+
+
+<xsl:include href="../common/autoidx-kimber.xsl"/>
+
+<!-- Java sort apparently works only on lang part, not country -->
+<xsl:param name="sort.lang">
+ <xsl:choose>
+ <xsl:when test="contains(&lang;, '-')">
+ <xsl:value-of select="substring-before(&lang;, '-')"/>
+ </xsl:when>
+ <xsl:when test="contains(&lang;, '_')">
+ <xsl:value-of select="substring-before(&lang;, '_')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="&lang;"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('k:getIndexGroupKey'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Innodata Isogen &#x0A;Java extensions for </xsl:text>
+ <xsl:text>internationalized indexes. &#x0A;Install those </xsl:text>
+ <xsl:text>extensions, or use a different index method.&#x0A;</xsl:text>
+ <xsl:text>For more information, see:&#x0A;</xsl:text>
+ <xsl:text>http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms"
+ select="//indexterm[count(.|key('k-group', k:getIndexGroupKey(&lang;, &primary;))[&scope;][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical"
+ select="$terms[not(starts-with(
+ k:getIndexGroupKey(&lang;, &primary;),
+ '#NUMERIC'
+ ))]"/>
+
+ <xsl:variable name="others"
+ select="$terms[starts-with(
+ k:getIndexGroupKey(&lang;, &primary;),
+ '#NUMERIC'
+ )]"/>
+
+ <div class="index">
+ <xsl:if test="$others">
+ <div class="indexdev">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others"
+ mode="index-symbol-div">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}"
+ select="k:getIndexGroupSortKey(&lang;,
+ k:getIndexGroupKey(&lang;, &primary;))"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical"
+ mode="index-div-kimber">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort lang="{$sort.lang}"
+ select="k:getIndexGroupSortKey(&lang;,
+ k:getIndexGroupKey(&lang;, &primary;))"/>
+ </xsl:apply-templates>
+ </div>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kimber">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="k:getIndexGroupKey(&lang;, &primary;)"/>
+
+ <xsl:variable name="label"
+ select="k:getIndexGroupLabel(&lang;, $key)"/>
+
+ <xsl:if test="key('k-group', $label)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:value-of select="$label"/>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="key('k-group', $key)[&scope;]
+ [count(.|key('primary', &primary;)[&scope;]
+ [1])=1]"
+ mode="index-primary">
+ <xsl:sort select="&primary;" lang="{$sort.lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/autoidx-kosek.xsl b/docs/xsl-generic/html/autoidx-kosek.xsl
new file mode 100644
index 00000000..a1309190
--- /dev/null
+++ b/docs/xsl-generic/html/autoidx-kosek.xsl
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+
+<!ENTITY primary 'normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = ""]))'>
+<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = ""]))'>
+<!ENTITY tertiary 'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = ""]))'>
+
+<!ENTITY scope 'count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))'>
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:i="urn:cz-kosek:functions:index"
+ xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
+ xmlns:func="http://exslt.org/functions"
+ xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService"
+ xmlns:exslt="http://exslt.org/common"
+ extension-element-prefixes="func exslt"
+ exclude-result-prefixes="func exslt i l k"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-kosek.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+
+<xsl:include href="../common/autoidx-kosek.xsl"/>
+
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="contains($vendor, 'Saxonica')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the Saxon 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('exslt:node-set') or
+ function-available('exslt:nodeSet'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(function-available('i:group-index'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the&#xA;</xsl:text>
+ <xsl:text>index extension functions be imported:&#xA;</xsl:text>
+ <xsl:text> xsl:import href="common/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms"
+ select="//indexterm[count(.|key('group-code', i:group-index(&primary;))[&scope;][1]) = 1 and not(@class = 'endofrange')]"/>
+
+ <div class="index">
+ <xsl:apply-templates select="$terms" mode="index-div-kosek">
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="i:group-index(&primary;)" data-type="number"/>
+ </xsl:apply-templates>
+ </div>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-kosek">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="i:group-index(&primary;)"/>
+
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+
+ <xsl:if test="key('group-code', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <div class="indexdiv">
+ <h3>
+ <xsl:value-of select="i:group-letter($key)"/>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="key('group-code', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1])=1]"
+ mode="index-primary">
+ <xsl:sort select="&primary;" lang="{$lang}"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/autoidx-ng.xsl b/docs/xsl-generic/html/autoidx-ng.xsl
new file mode 100644
index 00000000..9407b5cf
--- /dev/null
+++ b/docs/xsl-generic/html/autoidx-ng.xsl
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx-ng.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook XSL Stylesheet distribution.
+ See ../README or http://docbook.sf.net/ for copyright
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- You should have this directly in your customization file. -->
+<!-- This file is there only to retain backward compatibility. -->
+<xsl:import href="autoidx-kosek.xsl"/>
+<xsl:param name="index.method">kosek</xsl:param>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/autoidx.xsl b/docs/xsl-generic/html/autoidx.xsl
new file mode 100644
index 00000000..e01c0cd8
--- /dev/null
+++ b/docs/xsl-generic/html/autoidx.xsl
@@ -0,0 +1,645 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exslt="http://exslt.org/common"
+ extension-element-prefixes="exslt"
+ exclude-result-prefixes="exslt"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: autoidx.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- The "basic" method derived from Jeni Tennison's work. -->
+<!-- The "kosek" method contributed by Jirka Kosek. -->
+<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
+
+<xsl:variable name="kimber.imported" select="0"/>
+<xsl:variable name="kosek.imported" select="0"/>
+
+<xsl:key name="letter"
+ match="indexterm"
+ use="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
+
+<xsl:key name="primary"
+ match="indexterm"
+ use="&primary;"/>
+
+<xsl:key name="secondary"
+ match="indexterm"
+ use="concat(&primary;, &sep;, &secondary;)"/>
+
+<xsl:key name="tertiary"
+ match="indexterm"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
+
+<xsl:key name="endofrange"
+ match="indexterm[@class='endofrange']"
+ use="@startref"/>
+
+<xsl:key name="primary-section"
+ match="indexterm[not(secondary) and not(see)]"
+ use="concat(&primary;, &sep;, &section.id;)"/>
+
+<xsl:key name="secondary-section"
+ match="indexterm[not(tertiary) and not(see)]"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &section.id;)"/>
+
+<xsl:key name="tertiary-section"
+ match="indexterm[not(see)]"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, &section.id;)"/>
+
+<xsl:key name="see-also"
+ match="indexterm[seealso]"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso)"/>
+
+<xsl:key name="see"
+ match="indexterm[see]"
+ use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see)"/>
+
+<xsl:key name="sections" match="*[@id or @xml:id]" use="@id|@xml:id"/>
+
+
+<xsl:template name="generate-index">
+ <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$index.method = 'kosek'">
+ <xsl:call-template name="generate-kosek-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$index.method = 'kimber'">
+ <xsl:call-template name="generate-kimber-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="generate-basic-index">
+ <xsl:with-param name="scope" select="$scope"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate-basic-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="role">
+ <xsl:if test="$index.on.role != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:if test="$index.on.type != 0">
+ <xsl:value-of select="@type"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="terms"
+ select="//indexterm
+ [count(.|key('letter',
+ translate(substring(&primary;, 1, 1),
+ &lowercase;,
+ &uppercase;))
+ [&scope;][1]) = 1
+ and not(@class = 'endofrange')]"/>
+
+ <xsl:variable name="alphabetical"
+ select="$terms[contains(concat(&lowercase;, &uppercase;),
+ substring(&primary;, 1, 1))]"/>
+
+ <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;,
+ &uppercase;),
+ substring(&primary;, 1, 1)))]"/>
+ <div class="index">
+ <xsl:if test="$others">
+ <div class="indexdiv">
+ <h3>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'index symbols'"/>
+ </xsl:call-template>
+ </h3>
+ <dl>
+ <xsl:apply-templates select="$others[count(.|key('primary',
+ &primary;)[&scope;][1]) = 1]"
+ mode="index-symbol-div">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+
+ <xsl:apply-templates select="$alphabetical[count(.|key('letter',
+ translate(substring(&primary;, 1, 1),
+ &lowercase;,&uppercase;))[&scope;][1]) = 1]"
+ mode="index-div-basic">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </div>
+</xsl:template>
+
+<!-- This template not used if html/autoidx-kosek.xsl is imported -->
+<xsl:template name="generate-kosek-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="contains($vendor, 'libxslt')">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
+ <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+
+ <xsl:if test="not(function-available('exslt:node-set') or
+ function-available('exslt:nodeSet'))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
+ <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
+ <xsl:text>has it, or use a different index method.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kosek.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kosek' index method requires the&#xA;</xsl:text>
+ <xsl:text>kosek index extensions be imported:&#xA;</xsl:text>
+ <xsl:text> xsl:import href="html/autoidx-kosek.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- This template not used if html/autoidx-kimber.xsl is imported -->
+<xsl:template name="generate-kimber-index">
+ <xsl:param name="scope" select="NOTANODE"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+ <xsl:if test="not(contains($vendor, 'SAXON '))">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
+ <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="$kimber.imported = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ERROR: the 'kimber' index method requires the&#xA;</xsl:text>
+ <xsl:text>kimber index extensions be imported:&#xA;</xsl:text>
+ <xsl:text> xsl:import href="html/autoidx-kimber.xsl"</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-div-basic">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key"
+ select="translate(substring(&primary;, 1, 1),
+ &lowercase;,&uppercase;)"/>
+
+ <xsl:if test="key('letter', $key)[&scope;]
+ [count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+ <div class="indexdiv">
+ <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)">
+ <h3>
+ <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/>
+ </h3>
+ </xsl:if>
+ <dl>
+ <xsl:apply-templates select="key('letter', $key)[&scope;]
+ [count(.|key('primary', &primary;)
+ [&scope;][1])=1]"
+ mode="index-primary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-symbol-div">
+ <xsl:param name="scope" select="/"/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),
+ &lowercase;,&uppercase;)"/>
+
+ <xsl:apply-templates select="key('letter', $key)
+ [&scope;][count(.|key('primary', &primary;)[1]) = 1]"
+ mode="index-primary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-primary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="&primary;"/>
+ <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/>
+ <dt>
+ <xsl:value-of select="primary"/>
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('primary-section', concat($key, &sep;, &section.id;))[&scope;][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+
+ <xsl:if test="$refs[not(secondary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]"
+ mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]"
+ mode="index-secondary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-secondary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/>
+ <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/>
+ <dt>
+ <xsl:value-of select="secondary"/>
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('secondary-section', concat($key, &sep;, &section.id;))[&scope;][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+
+ <xsl:if test="$refs[not(tertiary)]/*[self::see]">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]"
+ mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"
+ mode="index-tertiary">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-tertiary">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
+ <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/>
+ <dt>
+ <xsl:value-of select="tertiary"/>
+ <xsl:for-each select="$refs[generate-id() = generate-id(key('tertiary-section', concat($key, &sep;, &section.id;))[&scope;][1])]">
+ <xsl:apply-templates select="." mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+
+ <xsl:if test="$refs/see">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]"
+ mode="index-see">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </dt>
+ <xsl:if test="$refs/seealso">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]"
+ mode="index-seealso">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
+ </xsl:apply-templates>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="position"/>
+
+ <xsl:variable name="term.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.term.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="number.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.number.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="range.separator">
+ <xsl:call-template name="index.separator">
+ <xsl:with-param name="key" select="'index.range.separator'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$position = 1">
+ <xsl:value-of select="$term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$number.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="@zone and string(@zone)">
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="normalize-space(@zone)"/>
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="&section;/titleabbrev and $index.prefer.titleabbrev != 0">
+ <xsl:apply-templates select="&section;" mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="&section;" mode="title.markup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="&section;"/>
+ <xsl:with-param name="context" select="//index[&scope;][1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:value-of select="$title"/> <!-- text only -->
+ </a>
+
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+ <xsl:if test="key('endofrange', $id)[&scope;]">
+ <xsl:apply-templates select="key('endofrange', $id)[&scope;][last()]"
+ mode="reference">
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ <xsl:with-param name="separator" select="$range.separator"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="reference">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="zones"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($zones, ' ')">
+ <xsl:variable name="zone" select="substring-before($zones, ' ')"/>
+ <xsl:variable name="target" select="key('sections', $zone)"/>
+
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target[1]"/>
+ <xsl:with-param name="context" select="//index[&scope;][1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target[1]" mode="index-title-content"/>
+ </a>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="reference">
+ <xsl:with-param name="zones" select="substring-after($zones, ' ')"/>
+ <xsl:with-param name="position" select="position()"/>
+ <xsl:with-param name="scope" select="$scope"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="zone" select="$zones"/>
+ <xsl:variable name="target" select="key('sections', $zone)"/>
+
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target[1]"/>
+ <xsl:with-param name="context" select="//index[&scope;][1]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target[1]" mode="index-title-content"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-see">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:text> (</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'see'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="see"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="index-seealso">
+ <xsl:param name="scope" select="."/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="type" select="''"/>
+
+ <xsl:for-each select="seealso">
+ <xsl:sort select="translate(., &lowercase;, &uppercase;)"/>
+ <dt>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'seealso'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>)</xsl:text>
+ </dt>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="*" mode="index-title-content">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="&section;" mode="title.markup"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template name="index.separator">
+ <xsl:param name="key" select="''"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$key = 'index.term.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.term.separator != ''">
+ <xsl:copy-of select="$index.term.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">term-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.number.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.number.separator != ''">
+ <xsl:copy-of select="$index.number.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">number-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$key = 'index.range.separator'">
+ <xsl:choose>
+ <!-- Use the override if not blank -->
+ <xsl:when test="$index.range.separator != ''">
+ <xsl:copy-of select="$index.range.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="context">index</xsl:with-param>
+ <xsl:with-param name="name">range-separator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/autotoc.xsl b/docs/xsl-generic/html/autotoc.xsl
new file mode 100644
index 00000000..3a50227c
--- /dev/null
+++ b/docs/xsl-generic/html/autotoc.xsl
@@ -0,0 +1,675 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: autotoc.xsl 7084 2007-07-19 07:17:45Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:variable name="toc.listitem.type">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">dt</xsl:when>
+ <xsl:otherwise>li</xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<!-- this is just hack because dl and ul aren't completely isomorphic -->
+<xsl:variable name="toc.dd.type">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">dd</xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+
+<xsl:template name="make.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
+
+ <xsl:variable name="nodes.plus" select="$nodes | qandaset"/>
+
+ <xsl:variable name="toc.title">
+ <xsl:if test="$toc.title.p">
+ <p>
+ <b>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">TableofContents</xsl:with-param>
+ </xsl:call-template>
+ </b>
+ </p>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$manual.toc != ''">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="toc" select="document($manual.toc, .)"/>
+ <xsl:variable name="tocentry" select="$toc//tocentry[@linkend=$id]"/>
+ <xsl:if test="$tocentry and $tocentry/*">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
+ </xsl:call-template>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$qanda.in.toc != 0">
+ <xsl:if test="$nodes.plus">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="$nodes.plus" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$nodes">
+ <div class="toc">
+ <xsl:copy-of select="$toc.title"/>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="set.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="book|setindex"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="division.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="part|reference
+ |preface|chapter|appendix
+ |article
+ |bibliography|glossary|index
+ |refentry
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="component.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="section|sect1
+ |simplesect[$simplesect.in.toc != 0]
+ |refentry
+ |article|bibliography|glossary
+ |appendix|index
+ |bridgehead[not(@renderas)
+ and $bridgehead.in.toc != 0]
+ |.//bridgehead[@renderas='sect1'
+ and $bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="component.toc.separator">
+ <!-- Customize to output something between
+ component.toc and first output -->
+</xsl:template>
+
+<xsl:template name="section.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes"
+ select="section|sect1|sect2|sect3|sect4|sect5|refentry
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="section.toc.separator">
+ <!-- Customize to output something between
+ section.toc and first output -->
+</xsl:template>
+<!-- ==================================================================== -->
+
+<xsl:template name="subtoc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="nodes" select="NOT-AN-ELEMENT"/>
+
+ <xsl:variable name="nodes.plus" select="$nodes | qandaset"/>
+
+ <xsl:variable name="subtoc">
+ <xsl:element name="{$toc.list.type}">
+ <xsl:choose>
+ <xsl:when test="$qanda.in.toc != 0">
+ <xsl:apply-templates mode="toc" select="$nodes.plus">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="toc" select="$nodes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'section'">
+ <xsl:value-of select="count(ancestor::section) + 1"/>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'sect1'">1</xsl:when>
+ <xsl:when test="local-name(.) = 'sect2'">2</xsl:when>
+ <xsl:when test="local-name(.) = 'sect3'">3</xsl:when>
+ <xsl:when test="local-name(.) = 'sect4'">4</xsl:when>
+ <xsl:when test="local-name(.) = 'sect5'">5</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect1'">1</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect2'">2</xsl:when>
+ <xsl:when test="local-name(.) = 'refsect3'">3</xsl:when>
+ <xsl:when test="local-name(.) = 'simplesect'">
+ <!-- sigh... -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'section'">
+ <xsl:value-of select="count(ancestor::section)"/>
+ </xsl:when>
+ <xsl:when test="local-name(..) = 'sect1'">2</xsl:when>
+ <xsl:when test="local-name(..) = 'sect2'">3</xsl:when>
+ <xsl:when test="local-name(..) = 'sect3'">4</xsl:when>
+ <xsl:when test="local-name(..) = 'sect4'">5</xsl:when>
+ <xsl:when test="local-name(..) = 'sect5'">6</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect1'">2</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect2'">3</xsl:when>
+ <xsl:when test="local-name(..) = 'refsect3'">4</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
+
+ <xsl:variable name="subtoc.list">
+ <xsl:choose>
+ <xsl:when test="$toc.dd.type = ''">
+ <xsl:copy-of select="$subtoc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$toc.dd.type}">
+ <xsl:copy-of select="$subtoc"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$toc.listitem.type}">
+ <xsl:call-template name="toc.line">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ <xsl:if test="$toc.listitem.type = 'li'
+ and $toc.section.depth > $depth and
+ ( ($qanda.in.toc = 0 and count($nodes)&gt;0) or
+ ($qanda.in.toc != 0 and count($nodes.plus)&gt;0) )
+ and $toc.max.depth > $depth.from.context">
+ <xsl:copy-of select="$subtoc.list"/>
+ </xsl:if>
+ </xsl:element>
+ <xsl:if test="$toc.listitem.type != 'li'
+ and $toc.section.depth > $depth and
+ ( ($qanda.in.toc = 0 and count($nodes)&gt;0) or
+ ($qanda.in.toc != 0 and count($nodes.plus)&gt;0) )
+ and $toc.max.depth > $depth.from.context">
+ <xsl:copy-of select="$subtoc.list"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="toc.line">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="depth" select="1"/>
+ <xsl:param name="depth.from.context" select="8"/>
+
+ <span>
+ <xsl:attribute name="class"><xsl:value-of select="local-name(.)"/></xsl:attribute>
+
+ <!-- * if $autotoc.label.in.hyperlink is zero, then output the label -->
+ <!-- * before the hyperlinked title (as the DSSSL stylesheet does) -->
+ <xsl:if test="$autotoc.label.in.hyperlink = 0">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ </xsl:if>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$toc-context"/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <!-- * if $autotoc.label.in.hyperlink is non-zero, then output the label -->
+ <!-- * as part of the hyperlinked title -->
+ <xsl:if test="not($autotoc.label.in.hyperlink = 0)">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </a>
+ </span>
+</xsl:template>
+
+<xsl:template match="book" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="part|reference
+ |preface|chapter|appendix
+ |article
+ |bibliography|glossary|index
+ |refentry
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="setindex" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <!-- If the setindex tag is not empty, it should be it in the TOC -->
+ <xsl:if test="* or $generate.index != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="appendix|chapter|article
+ |index|glossary|bibliography
+ |preface|reference|refentry
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix|article" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="section|sect1
+ |simplesect[$simplesect.in.toc != 0]
+ |refentry
+ |glossary|bibliography|index
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect1" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect2
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect2" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect3
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect3" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect4
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect4" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect5
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect5" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="simplesect" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="section" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="section
+ |bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:if test="$bridgehead.in.toc != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="bibliography|glossary" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="index" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <!-- If the index tag is not empty, it should be it in the TOC -->
+ <xsl:if test="* or $generate.index != 0">
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refentry" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:variable name="refmeta" select=".//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select=".//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]"
+ mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc"
+ mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]"
+ mode="titleabbrev.markup"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$toc.listitem.type}">
+ <span class='refentrytitle'>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:copy-of select="$title"/>
+ </a>
+ </span>
+ <span class='refpurpose'>
+ <xsl:if test="$annotate.toc != 0">
+ <!-- * DocBook 5 says inlinemediaobject (among other things) -->
+ <!-- * is allowed in refpurpose; so we need to run -->
+ <!-- * apply-templates on refpurpose here, instead of value-of -->
+ <xsl:apply-templates select="refnamediv/refpurpose"/>
+ </xsl:if>
+ </span>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="title" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select=".."/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+</xsl:template>
+
+<xsl:template name="manual-toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="tocentry"/>
+
+ <!-- be careful, we don't want to change the current document to the other tree! -->
+
+ <xsl:if test="$tocentry">
+ <xsl:variable name="node" select="key('id', $tocentry/@linkend)"/>
+
+ <xsl:element name="{$toc.listitem.type}">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="$node" mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$node"/>
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$node" mode="titleabbrev.markup"/>
+ </a>
+ </xsl:element>
+
+ <xsl:if test="$tocentry/*">
+ <xsl:element name="{$toc.list.type}">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:if test="$tocentry/following-sibling::*">
+ <xsl:call-template name="manual-toc">
+ <xsl:with-param name="tocentry" select="$tocentry/following-sibling::*[1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="list.of.titles">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="titles" select="'table'"/>
+ <xsl:param name="nodes" select=".//table"/>
+
+ <xsl:if test="$nodes">
+ <div class="list-of-{$titles}s">
+ <p>
+ <b>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$titles='table'">ListofTables</xsl:when>
+ <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+ <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </b>
+ </p>
+
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="$nodes" mode="toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="figure|table|example|equation|procedure" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:element name="{$toc.listitem.type}">
+ <xsl:variable name="label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:copy-of select="$label"/>
+ <xsl:if test="$label != ''">
+ <xsl:value-of select="$autotoc.label.separator"/>
+ </xsl:if>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </a>
+ </xsl:element>
+</xsl:template>
+
+<!-- Used only if qanda.in.toc parameter is non-zero -->
+<xsl:template match="qandaset" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="qandadiv | qandaentry"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="qandadiv|qandaentry" mode="toc">
+ <xsl:apply-templates select="." mode="qandatoc.mode"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/html/biblio-iso690.xsl b/docs/xsl-generic/html/biblio-iso690.xsl
new file mode 100644
index 00000000..366212f5
--- /dev/null
+++ b/docs/xsl-generic/html/biblio-iso690.xsl
@@ -0,0 +1,1300 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 6402 2006-11-12 08:23:21Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ The original code for processing bibliography in ISO690 style
+ was provided by Jana Dvorakova <jana4u@seznam.cz>
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- if biblioentry.alt.primary.seps is set to nonzero value then use alternative separators for primary responsibility - $alt.person.two.sep, $alt.person.last.sep, $alt.person.more.sep -->
+<xsl:param name="biblioentry.alt.primary.seps" select="0"/>
+
+<!-- how many authors will be printed if there is more than three authors - set to number 1 (default value), 2 or 3 -->
+<xsl:param name="biblioentry.primary.count" select="1"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="iso690.makecitation">
+<!-- Types of resources -->
+ <xsl:choose>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ENTIRE MESSAGE SYSTEM -->
+ <!-- same as Monographs -->
+ <xsl:when test="./@role='messagesystem'">
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:when>
+
+ <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ELECTRONIC MESSAGES -->
+ <!-- same as Contributions to Monographs -->
+ <xsl:when test="./@role='message'">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- SERIALS -->
+ <xsl:when test="./@role='serial' or ./biblioid/@class='issn' or ./issn">
+ <xsl:call-template name="iso690.serial"/>
+ </xsl:when>
+
+ <!-- PARTS OF MONOGRAPHS -->
+ <xsl:when test="./@role='part' or (./bibliomisc[@role='secnum']|./bibliomisc[@role='sectitle'])">
+ <xsl:call-template name="iso690.monogr.part"/>
+ </xsl:when>
+
+ <!-- CONTRIBUTIONS TO MONOGRAPHS -->
+ <xsl:when test="./@role='contribution' or (./biblioset/@relation='part' and ./biblioset/@relation='book')">
+ <xsl:call-template name="iso690.paper.mon"/>
+ </xsl:when>
+
+ <!-- ARTICLES, ETC., IN SERIALS -->
+ <xsl:when test="./@role='article' or (./biblioset/@relation='journal' and ./biblioset/@relation='article')">
+ <xsl:call-template name="iso690.article"/>
+ </xsl:when>
+
+ <!-- PATENT DOCUMENTS -->
+ <xsl:when test="./@role='patent' or (./bibliomisc[@role='patenttype'] and ./bibliomisc[@role='patentnum'])">
+ <xsl:call-template name="iso690.patent"/>
+ </xsl:when>
+
+ <!-- MONOGRAPHS -->
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.monogr"/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- MONOGRAPHS -->
+<xsl:template name="iso690.monogr">
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Extent -->
+ <xsl:call-template name="iso690.extent"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.isbn"/>
+</xsl:template>
+
+<!-- SERIALS -->
+<xsl:template name="iso690.serial">
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Responsibility [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./bibliomisc[@role='issuing']"/>
+ </xsl:call-template>
+ <!-- Issue designation (date and/or num) [nonEL] -->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.issuing"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Series -->
+ <xsl:call-template name="iso690.serie"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number -->
+ <xsl:call-template name="iso690.issn"/>
+</xsl:template>
+
+<!-- PARTS OF MONOGRAPHS -->
+<xsl:template name="iso690.monogr.part">
+ <!-- Primary responsibility of host document -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium of host document -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility of host document [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./volumenum"/>
+ </xsl:call-template>
+ <!-- Numeration of the part [nonEL]-->
+ <xsl:if test="not(./bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.partnr"/>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.pub"/>
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.part.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Numeration within host document [EL] -->
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- CONTRIBUTIONS TO MONOGRAPHS -->
+<xsl:template name="iso690.paper.mon">
+<!-- Contribution -->
+ <xsl:apply-templates mode="iso690.paper.part" select="./biblioset[@relation='part']"/>
+<!-- In -->
+ <xsl:text>In </xsl:text>
+<!-- Host -->
+ <xsl:apply-templates mode="iso690.paper.book" select="./biblioset[@relation='book']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.part">
+<!-- Contribution -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.paper.book">
+<!-- Host -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility [EL] -->
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition"/>
+ <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+ <xsl:call-template name="iso690.paper.pub"/>
+ <!-- Numeration within host document [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.isbn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ARTICLES, ETC., IN SERIALS -->
+<xsl:template name="iso690.article">
+<!-- Article -->
+ <xsl:apply-templates mode="iso690.article.art" select="./biblioset[@relation='article']"/>
+<!-- Serial -->
+ <xsl:apply-templates mode="iso690.article.jour" select="./biblioset[@relation='journal']"/>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.art">
+<!-- Article -->
+ <!-- Primary responsibility -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title -->
+ <xsl:call-template name="iso690.title">
+ <xsl:with-param name="italic" select="0"/>
+ </xsl:call-template>
+ <!-- Subordinate responsibility [nonEL] -->
+ <xsl:if test="not(../*/bibliomisc[@role='medium'])">
+ <xsl:call-template name="iso690.secondary"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="biblioset" mode="iso690.article.jour">
+<!-- Serial -->
+ <!-- Title and Type of medium -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Edition -->
+ <xsl:call-template name="iso690.edition">
+ <xsl:with-param name="after" select="./pubdate[not(@role='issuing')]|./volumenum|./issuenum|./pagenums"/>
+ </xsl:call-template>
+ <!-- Number designation [EL] -->
+ <!-- Location within host -->
+ <xsl:call-template name="iso690.article.location"/>
+ <xsl:if test="./bibliomisc[@role='medium']">
+ <!-- Notes [EL] -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Avaibility and access [EL] -->
+ <xsl:call-template name="iso690.access"/>
+ <!-- Standard number [EL] -->
+ <xsl:call-template name="iso690.issn"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- PATENT DOCUMENTS -->
+<xsl:template name="iso690.patent">
+ <!-- Primary responsibility (applicant) -->
+ <xsl:call-template name="iso690.primary"/>
+ <!-- Title of the invention -->
+ <xsl:call-template name="iso690.title"/>
+ <!-- Subordinate responsibility -->
+ <xsl:call-template name="iso690.secondary"/>
+ <!-- Notes -->
+ <xsl:call-template name="iso690.notice"/>
+ <!-- Identification -->
+ <xsl:call-template name="iso690.pat.ident"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Elements -->
+
+<!-- Primary responsibility -->
+<xsl:template name="iso690.primary">
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./authorgroup/author|./author">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/author|.//author"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/editor|./editor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/editor|.//editor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./authorgroup/corpauthor|./corpauthor">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select=".//authorgroup/corpauthor|.//corpauthor"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="(./firstname)and(./surname)">
+ <xsl:call-template name="iso690.author"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author.list">
+ <xsl:param name="person.list"
+ select="author|corpauthor|editor"/>
+ <xsl:param name="person.count" select="count($person.list)"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:param name="group" select="./authorgroup[@role='many']"/>
+ <xsl:param name="many" select="0"/>
+
+ <xsl:param name="primary.many">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.many'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.editor">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.editor'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="primary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count &gt; $person.count"></xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$person.count &lt; 4 and not($group)">
+ <xsl:call-template name="iso690.author">
+ <xsl:with-param name="node" select="$person.list[position()=$count]"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$person.count = 2 and $count = 1 and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.two.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count = 2 and $count = 1">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep2'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.last.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$person.count &gt; 2 and $count+1 = $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'seplast'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count and $biblioentry.alt.primary.seps != 0">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.more.sep'"/></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$count &lt; $person.count">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'authorgroup'"/>
+ <xsl:with-param name="name" select="'sep'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($count = $person.count)">
+ <xsl:choose>
+ <xsl:when test="$many!=0">
+ <xsl:if test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ </xsl:if>
+ <xsl:value-of select="$primary.many"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$primary.many"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='editor'">
+ <xsl:value-of select="$primary.editor"/>
+ <xsl:value-of select="$primary.sep"/>
+ </xsl:when>
+ <xsl:when test="name($person.list[position()=$count])='corpauthor'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string($person.list[position()=$count]//firstname[1])"/>
+ <xsl:with-param name="sep" select="$primary.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list"/>
+ <xsl:with-param name="person.count" select="$person.count"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="many" select="$many"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="($biblioentry.primary.count&gt;=3) and ($person.count&gt;=3)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]|$person.list[3]"/>
+ <xsl:with-param name="person.count" select="3"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="($biblioentry.primary.count&gt;1) and ($person.count&gt;1)">
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]"/>
+ <xsl:with-param name="person.count" select="2"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.author.list">
+ <xsl:with-param name="person.list" select="$person.list[1]"/>
+ <xsl:with-param name="person.count" select="1"/>
+ <xsl:with-param name="count" select="1"/>
+ <xsl:with-param name="many" select="1"/>
+ <xsl:with-param name="group"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.author">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="lastfirst.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'lastfirst.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="name($node)!='corpauthor'">
+ <span style="text-transform:uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node//surname[1]"/>
+ </span>
+ <xsl:if test="$node//surname and $node//firstname">
+ <xsl:value-of select="$lastfirst.sep"/>
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode" select="$node//firstname[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span style="text-transform:uppercase">
+ <xsl:apply-templates mode="iso690.mode" select="$node"/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="corpauthor|firstname|surname" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Title and Type of medium -->
+<xsl:template name="iso690.title">
+ <xsl:param name="medium" select="./bibliomisc[@role='medium']"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+
+ <xsl:apply-templates mode="iso690.mode" select="./title">
+ <xsl:with-param name="medium" select="$medium"/>
+ <xsl:with-param name="italic" select="$italic"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="title" mode="iso690.mode">
+ <xsl:param name="medium"/>
+ <xsl:param name="italic" select="1"/>
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="medium2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$italic=1">
+ <xsl:call-template name="iso690.italic.title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.make.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$medium">
+ <xsl:value-of select="$medium1"/>
+ <xsl:apply-templates mode="iso690.mode" select="$medium"/>
+ <xsl:value-of select="$medium2"/>
+ </xsl:if>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="concat(string(.),string(../subtitle))"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="iso690.italic.title">
+ <i>
+ <xsl:call-template name="iso690.make.title"/>
+ </i>
+</xsl:template>
+
+<xsl:template name="iso690.make.title">
+ <xsl:param name="submaintitle.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'submaintitle.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:if test="../subtitle">
+ <xsl:value-of select="$submaintitle.sep"/>
+ <xsl:apply-templates mode="iso690.mode" select="../subtitle"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='medium']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Subordinate responsibility -->
+<xsl:template name="iso690.secondary">
+ <xsl:param name="secondary.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="secondary.person.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.person.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:for-each select="./bibliomisc[@role='secondary']">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ <xsl:choose>
+ <xsl:when test="position()=count(../bibliomisc[@role='secondary'])">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$secondary.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$secondary.person.sep"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secondary']" mode="iso690.mode">
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Edition -->
+<xsl:template name="iso690.edition">
+ <xsl:param name="after"/>
+ <xsl:param name="edition.serial.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.serial.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="string($after)!=''">
+ <xsl:apply-templates mode="iso690.mode" select="./edition">
+ <xsl:with-param name="sep" select="$edition.serial.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./edition"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="edition" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Issue designation (date and/or num) -->
+<xsl:template name="iso690.issuing">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2] and ./issuenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2]">
+ <xsl:call-template name="iso690.issuedate"/>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing'] and ./volumenum and ./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pubdate[@role='issuing']">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./volumenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$issuing.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.issuedate">
+ <xsl:param name="issuing.div">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.range">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="issuing.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pubdate[@role='issuing'][2]">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][1]">
+ <xsl:with-param name="sep" select="$issuing.range"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][2]">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']">
+ <xsl:with-param name="sep" select="$issuing.div"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="pubdate[@role='issuing']" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Numeration of the part -->
+<xsl:template name="iso690.partnr">
+ <xsl:param name="partnr.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'partnr.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$partnr.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation -->
+<xsl:template name="iso690.pub">
+ <xsl:param name="onlydate" select="0"/>
+ <xsl:param name="placesep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'placepubl.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="pubsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'publyear.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="endsep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="(./publisher/publishername|./publishername|./publisher/address/city)and($onlydate=0)and(./pubdate[not(@role='issuing')]|./copyright/year|./date[@role='upd']|./date[@role='upd'])">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$pubsep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="(./publisher/publishername|./publishername)and(./publisher/address/city)and($onlydate=0)">
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city">
+ <xsl:with-param name="sep" select="$placesep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="($onlydate=1)or(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:apply-templates>
+ <xsl:if test="$onlydate=1">
+ <xsl:call-template name="iso690.location">
+ <xsl:with-param name="onlypages" select="1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="not(./pubdate[not(@role='issuing')]|./copyright/year)">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$endsep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.paper.pub">
+ <xsl:param name="spec.pubinfo.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'spec.pubinfo.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumnum|./issuenum|./pagenums">
+ <xsl:call-template name="iso690.pub">
+ <xsl:with-param name="endsep" select="$spec.pubinfo.sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.pub"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.data">
+ <xsl:param name="sep"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='upd']">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="iso690.mode" select="./date[@role='cit']"/>
+ <xsl:choose>
+ <xsl:when test="./date[@role='cit']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="./date[@role='upd']">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(./date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="publisher/address/city|publishername" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="0"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pubdate|copyright/year" mode="iso690.mode">
+ <xsl:param name="sep"/>
+ <xsl:param name="upd" select="1"/>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="name(.)!='pubdate'">
+ <xsl:value-of select="'&#x00A9;'"/><!-- copyright -->
+ </xsl:if>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.space">
+ <xsl:with-param name="text" select="$substr"/>
+ </xsl:call-template>
+ <xsl:if test="$upd!=0">
+ <xsl:choose>
+ <xsl:when test="name(.)='pubdate'">
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../date[@role='cit']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='upd']"/>
+ <xsl:apply-templates mode="iso690.mode" select="../../date[@role='cit']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="../date[@role='cit']|../../date[@role='cit'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="$datecit2"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="../date[@role='upd']|../../date[@role='upd'] and $upd!=0">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(../date[@role='upd'])"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$substr='-'">
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="' '"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.space">
+ <xsl:param name="text" select="substring(string(.),string-length(string(.)))"/>
+ <xsl:if test="$text='-'">
+ <xsl:value-of select="' '"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Date of update/revision -->
+<xsl:template match="date[@role='upd']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'upd.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$sep"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+</xsl:template>
+
+<!-- Date of citation -->
+<xsl:template match="date[@role='cit']" mode="iso690.mode">
+ <xsl:param name="datecit1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="datecit2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$datecit1"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$datecit2"/>
+</xsl:template>
+
+<!-- Extent -->
+<xsl:template name="iso690.extent">
+ <xsl:param name="extent.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'extent.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums">
+ <xsl:with-param name="sep" select="$extent.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Location within host -->
+<xsl:template name="iso690.part.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:when test="./bibliomisc[@role='sectitle']">
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.article.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="locs.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="not(./date[@role='upd']|./date[@role='cit'])">
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="iso690.location"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="./volumenum|./issuenum|./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="upd" select="0"/>
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./issuenum">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="./pagenums">
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$locs.sep"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="iso690.data">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="iso690.location">
+ <xsl:param name="location.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="./volumenum and not(./issuenum) and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./issuenum and not(./pagenums)">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum">
+ <xsl:with-param name="sep" select="$location.sep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="./pagenums">
+ <xsl:apply-templates mode="iso690.mode" select="./volumenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./issuenum"/>
+ <xsl:apply-templates mode="iso690.mode" select="./pagenums"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomisc[@role='secnum']|bibliomisc[@role='sectitle']" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="volumenum|issuenum" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="iso690.mode">
+ <xsl:param name="sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Series -->
+<xsl:template name="iso690.serie">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[@role='serie']"/>
+</xsl:template>
+
+<!-- Notes -->
+<xsl:template name="iso690.notice">
+ <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[not(@role)]"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc[not(@role)]|bibliomisc[@role='serie']" mode="iso690.mode">
+ <xsl:param name="notice.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'notice.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="string(.)"/>
+ <xsl:with-param name="sep" select="$notice.sep"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Avaibility and access -->
+<xsl:template name="iso690.access">
+ <xsl:for-each select="./biblioid[@class='uri']|./bibliomisc[@role='access']">
+ <xsl:choose>
+ <xsl:when test="position()=1">
+ <xsl:apply-templates mode="iso690.mode" select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select=".">
+ <xsl:with-param name="firstacc" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']/ulink|bibliomisc[@role='access']/ulink" mode="iso690.mode">
+ <xsl:param name="link1">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link1'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="link2">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link2'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$link1"/>
+ <xsl:call-template name="ulink"/>
+ <xsl:value-of select="$link2"/>
+</xsl:template>
+
+<xsl:template match="biblioid[@class='uri']|bibliomisc[@role='access']" mode="iso690.mode">
+ <xsl:param name="firstacc" select="1"/>
+ <xsl:param name="access">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="acctoo">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'acctoo'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="onwww">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'onwww'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="oninet">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'oninet'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.end">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.end'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="access.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$firstacc=1">
+ <xsl:value-of select="$access"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$acctoo"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="(./ulink)and(string(./ulink)=string(.))">
+ <xsl:choose>
+ <xsl:when test="(starts-with(./ulink/@url,'http://')or(starts-with(./ulink/@url,'https://')))">
+ <xsl:value-of select="$onwww"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$oninet"/>
+ <xsl:value-of select="$access.end"/>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="(./ulink)and(string(./ulink)!=string(.))">
+ <xsl:value-of select="text()[1]"/>
+ <xsl:call-template name="iso690.endsep">
+ <xsl:with-param name="text" select="text()[1]"/>
+ <xsl:with-param name="sep" select="$access.end"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="iso690.mode" select="./ulink"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$access.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISBN -->
+<xsl:template name="iso690.isbn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='isbn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='isbn']"/>
+ </xsl:when>
+ <xsl:when test="./isbn">
+ <xsl:apply-templates mode="iso690.mode" select="./isbn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="isbn|biblioid[@class='isbn']" mode="iso690.mode">
+ <xsl:param name="isbn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'isbn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$isbn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Standard number - ISSN -->
+<xsl:template name="iso690.issn">
+ <xsl:choose>
+ <xsl:when test="./biblioid/@class='issn'">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='issn']"/>
+ </xsl:when>
+ <xsl:when test="./issn">
+ <xsl:apply-templates mode="iso690.mode" select="./issn"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="issn|biblioid[@class='issn']" mode="iso690.mode">
+ <xsl:param name="issn">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issn'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:param name="stdnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="$issn"/>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$stdnum.sep"/>
+</xsl:template>
+
+<!-- Identification of patent document -->
+<xsl:template name="iso690.pat.ident">
+ <xsl:param name="patdate.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patdate.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode" select="./address/country"/>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patenttype']"/>
+ <xsl:choose>
+ <xsl:when test="./biblioid[@class='other' and @otherclass='patentnum']">
+ <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='other' and @otherclass='patentnum']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patentnum']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]">
+ <xsl:with-param name="sep" select="$patdate.sep"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- Country or issuing office -->
+<xsl:template match="address/country" mode="iso690.mode">
+ <xsl:param name="patcountry.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patcountry.sep'"/></xsl:call-template>
+ </xsl:param>
+ <i>
+ <xsl:apply-templates mode="iso690.mode"/>
+ </i>
+ <xsl:value-of select="$patcountry.sep"/>
+</xsl:template>
+
+<!-- Kind of patent document -->
+<xsl:template match="bibliomisc[@role='patenttype']" mode="iso690.mode">
+ <xsl:param name="pattype.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pattype.sep'"/></xsl:call-template>
+ </xsl:param>
+ <i>
+ <xsl:apply-templates mode="iso690.mode"/>
+ </i>
+ <xsl:value-of select="$pattype.sep"/>
+</xsl:template>
+
+<!-- Number -->
+<xsl:template match="biblioid[@class='other' and @otherclass='patentnum']|bibliomisc[@role='patentnum']" mode="iso690.mode">
+ <xsl:param name="patnum.sep">
+ <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patnum.sep'"/></xsl:call-template>
+ </xsl:param>
+ <xsl:apply-templates mode="iso690.mode"/>
+ <xsl:value-of select="$patnum.sep"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- Supplementary templates -->
+
+<xsl:template name="iso690.endsep">
+ <xsl:param name="text"/>
+ <xsl:param name="sep" select=". "/>
+ <xsl:choose>
+ <xsl:when test="substring($text,string-length($text))!=substring($sep,1,1)">
+ <xsl:value-of select="$sep"/>
+ </xsl:when>
+ <xsl:when test="substring($text,string-length($text))=' '">
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="' '"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="iso690.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/biblio.xsl b/docs/xsl-generic/html/biblio.xsl
new file mode 100644
index 00000000..64369c6b
--- /dev/null
+++ b/docs/xsl-generic/html/biblio.xsl
@@ -0,0 +1,1228 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: biblio.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliography">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="bibliography.titlepage"/>
+
+ <xsl:apply-templates/>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="bibliography/bibliographyinfo"></xsl:template>
+<xsl:template match="bibliography/info"></xsl:template>
+<xsl:template match="bibliography/title"></xsl:template>
+<xsl:template match="bibliography/subtitle"></xsl:template>
+<xsl:template match="bibliography/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliodiv">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="bibliodiv/title">
+ <h3>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bibliolist">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[not(self::blockinfo)
+ and not(self::info)
+ and not(self::title)
+ and not(self::titleabbrev)
+ and not(self::biblioentry)
+ and not(self::bibliomixed)]"/>
+ <xsl:apply-templates select="biblioentry|bibliomixed"/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="biblioentry">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography/
+ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:choose>
+ <xsl:when test="$bibliography.style = 'iso690'">
+ <xsl:call-template name="iso690.makecitation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="bibliomixed">
+ <xsl:param name="label">
+ <xsl:call-template name="biblioentry.label"/>
+ </xsl:param>
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="entry" select="$bib/bibliography/
+ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$entry">
+ <xsl:with-param name="label" select="$label"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$entry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <p>
+ <xsl:copy-of select="$label"/>
+ <xsl:text>Error: no bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <p>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$label"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="biblioentry.label">
+ <xsl:param name="node" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:text>[</xsl:text>
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node/child::*[1]) = 'abbrev'">
+ <xsl:text>[</xsl:text>
+ <xsl:apply-templates select="$node/abbrev[1]"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xreflabel">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xreflabel"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:when test="$node/@xml:id">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="$node/@xml:id"/>
+ <xsl:text>] </xsl:text>
+ </xsl:when>
+ <xsl:otherwise><!-- nop --></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliography.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliography.mode">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="address" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artheader|articleinfo|info" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="person.name"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="person.name.list"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="biblioset/title|biblioset/citetitle"
+ mode="bibliography.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <i><xsl:apply-templates/></i>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bookbiblio" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collab" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collabname" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confdates" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confnum" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confsponsor" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="copyright" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="year" mode="bibliography.mode"/>
+ <xsl:if test="holder">
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="bibliography.mode"/>
+ </xsl:if>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="year" mode="bibliography.mode">
+ <xsl:apply-templates/><xsl:text>, </xsl:text>
+</xsl:template>
+
+<xsl:template match="year[position()=last()]" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="holder" mode="bibliography.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="corpauthor" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="person.name"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliography.mode">
+ <!-- suppressed -->
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliography.mode">
+ <!-- suppressed; how could this be represented? -->
+</xsl:template>
+
+<xsl:template match="seriesinfo" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <i><xsl:apply-templates mode="bibliography.mode"/></i>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
+ mode="bibliography.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliography.mode"/>
+ <xsl:copy-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="bibliomixed.mode">
+ <xsl:apply-templates select="."/><!-- try the default mode -->
+</xsl:template>
+
+<xsl:template match="abbrev" mode="bibliomixed.mode">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="abstract" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="address" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="bibliomset" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomset/title|bibliomset/citetitle"
+ mode="bibliomixed.mode">
+ <xsl:variable name="relation" select="../@relation"/>
+ <xsl:choose>
+ <xsl:when test="$relation='article' or @pubwork='article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <i><xsl:apply-templates/></i>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ================================================== -->
+
+<xsl:template match="biblioset" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="citetitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+
+<xsl:template match="collab" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractnum" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="copyright" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="firstname" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="honorific" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="indexterm" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="lineage" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othername" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productname" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publisher" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="publishername" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="bibliomixed.mode">
+ <!-- suppressed; how could this be represented? -->
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="surname" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="volumenum" mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
+ mode="bibliomixed.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/block.xsl b/docs/xsl-generic/html/block.xsl
new file mode 100644
index 00000000..15487c84
--- /dev/null
+++ b/docs/xsl-generic/html/block.xsl
@@ -0,0 +1,434 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: block.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- What should we do about styling blockinfo? -->
+
+<xsl:template match="blockinfo|info">
+ <!-- suppress -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="block.object">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="para">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:if test="position() = 1 and parent::listitem">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="parent::listitem"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="paragraph">
+ <xsl:param name="class" select="''"/>
+ <xsl:param name="content"/>
+
+ <xsl:variable name="p">
+ <p>
+ <xsl:call-template name="dir"/>
+ <xsl:if test="$class != ''">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </p>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$html.cleanup != 0">
+ <xsl:call-template name="unwrap.p">
+ <xsl:with-param name="p" select="$p"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$p"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="simpara">
+ <!-- see also listitem/simpara in lists.xsl -->
+ <p>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="formalpara">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class">
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Only use title from info -->
+<xsl:template match="formalpara/info">
+ <xsl:apply-templates select="title"/>
+</xsl:template>
+
+<xsl:template match="formalpara/title|formalpara/info/title">
+ <xsl:variable name="titleStr">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:variable name="lastChar">
+ <xsl:if test="$titleStr != ''">
+ <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <b>
+ <xsl:copy-of select="$titleStr"/>
+ <xsl:if test="$lastChar != ''
+ and not(contains($runinhead.title.end.punct, $lastChar))">
+ <xsl:value-of select="$runinhead.default.title.end.punct"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </b>
+</xsl:template>
+
+<xsl:template match="formalpara/para">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="blockquote">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="@lang or @xml:lang">
+ <xsl:call-template name="language.attribute"/>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="attribution">
+ <table border="0" width="100%"
+ cellspacing="0" cellpadding="0" class="blockquote"
+ summary="Block quote">
+ <tr>
+ <td width="10%" valign="top">&#160;</td>
+ <td width="80%" valign="top">
+ <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/>
+ </td>
+ <td width="10%" valign="top">&#160;</td>
+ </tr>
+ <tr>
+ <td width="10%" valign="top">&#160;</td>
+ <td colspan="2" align="right" valign="top">
+ <xsl:text>--</xsl:text>
+ <xsl:apply-templates select="attribution"/>
+ </td>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <blockquote>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </blockquote>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="blockquote/title|blockquote/info/title">
+ <div class="blockquote-title">
+ <p>
+ <b>
+ <xsl:apply-templates/>
+ </b>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="epigraph">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="para|simpara|formalpara|literallayout"/>
+ <xsl:if test="attribution">
+ <div class="attribution">
+ <span>--<xsl:apply-templates select="attribution"/></span>
+ </div>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="attribution">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="abstract|sidebar">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="'1'"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="abstract/title|sidebar/title">
+</xsl:template>
+
+<xsl:template match="sidebar/sidebarinfo|sidebar/info"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="msgset">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="simplemsgentry">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msg">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgmain">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgmain/title">
+ <b><xsl:apply-templates/></b>
+</xsl:template>
+
+<xsl:template match="msgsub">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgsub/title">
+ <b><xsl:apply-templates/></b>
+</xsl:template>
+
+<xsl:template match="msgrel">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgrel/title">
+ <b><xsl:apply-templates/></b>
+</xsl:template>
+
+<xsl:template match="msgtext">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msginfo">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msglevel">
+ <p>
+ <b>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgLevel'"/>
+ </xsl:call-template>
+ </b>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="msgorig">
+ <p>
+ <b>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgOrig'"/>
+ </xsl:call-template>
+ </b>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="msgaud">
+ <p>
+ <b>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'msgset'"/>
+ <xsl:with-param name="name" select="'MsgAud'"/>
+ </xsl:call-template>
+ </b>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="msgexplan">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<xsl:template match="msgexplan/title">
+ <p><b><xsl:apply-templates/></b></p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="revhistory">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <table border="0" width="100%" summary="Revision history">
+ <tr>
+ <th align="left" valign="top" colspan="3">
+ <b>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </b>
+ </th>
+ </tr>
+ <xsl:apply-templates/>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="revhistory/revision">
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <tr>
+ <td align="left">
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber"/>
+ </xsl:if>
+ </td>
+ <td align="left">
+ <xsl:apply-templates select="$revdate"/>
+ </td>
+ <xsl:choose>
+ <xsl:when test="count($revauthor)=0">
+ <td align="left">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">nbsp</xsl:with-param>
+ </xsl:call-template>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td align="left">
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="."/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+ <xsl:if test="$revremark">
+ <tr>
+ <td align="left" colspan="3">
+ <xsl:apply-templates select="$revremark"/>
+ </td>
+ </tr>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/date">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials">
+ <xsl:text>, </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials[1]" priority="2">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revremark">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="ackno">
+ <p>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="highlights">
+ <xsl:call-template name="block.object"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/callout.xsl b/docs/xsl-generic/html/callout.xsl
new file mode 100644
index 00000000..5052f42d
--- /dev/null
+++ b/docs/xsl-generic/html/callout.xsl
@@ -0,0 +1,201 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim"
+ xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ exclude-result-prefixes="sverb xverb lxslt"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: callout.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xverb"
+ functions="insertCallouts"/>
+
+<xsl:template match="programlistingco|screenco">
+ <xsl:variable name="verbatim" select="programlisting|screen"/>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $callouts.extension != '0'">
+ <xsl:variable name="rtf">
+ <xsl:apply-templates select="$verbatim">
+ <xsl:with-param name="suppress-numbers" select="'1'"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:variable name="rtf-with-callouts">
+ <xsl:choose>
+ <xsl:when test="function-available('sverb:insertCallouts')">
+ <xsl:copy-of select="sverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xverb:insertCallouts')">
+ <xsl:copy-of select="xverb:insertCallouts(areaspec,$rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertCallouts function is available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$verbatim/@linenumbering = 'numbered'
+ and $linenumbering.extension != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf-with-callouts"/>
+ <xsl:with-param name="pi.context"
+ select="programlisting|screen"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="calloutlist"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$rtf-with-callouts"/>
+ <xsl:apply-templates select="calloutlist"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="areaspec|areaset|area">
+</xsl:template>
+
+<xsl:template match="areaset" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="area" mode="conumber">
+ <xsl:number count="area|areaset" format="1"/>
+</xsl:template>
+
+<xsl:template match="co" name="co">
+ <!-- Support a single linkend in HTML -->
+ <xsl:variable name="targets" select="key('id', @linkends)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="coref">
+ <!-- tricky; this relies on the fact that we can process the "co" that's -->
+ <!-- "over there" as if it were "right here" -->
+
+ <xsl:variable name="co" select="key('id', @linkend)"/>
+ <xsl:choose>
+ <xsl:when test="not($co)">
+ <xsl:message>
+ <xsl:text>Error: coref link is broken: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="local-name($co) != 'co'">
+ <xsl:message>
+ <xsl:text>Error: coref doesn't point to a co: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$co"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="co" mode="callout-bug">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:number count="co"
+ level="any"
+ from="programlisting|screen|literallayout|synopsis"
+ format="1"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="callout-bug">
+ <xsl:param name="conum" select='1'/>
+
+ <xsl:choose>
+ <xsl:when test="$callout.graphics != 0
+ and $conum &lt;= $callout.graphics.number.limit">
+ <img src="{$callout.graphics.path}{$conum}{$callout.graphics.extension}"
+ alt="{$conum}" border="0"/>
+ </xsl:when>
+ <xsl:when test="$callout.unicode != 0
+ and $conum &lt;= $callout.unicode.number.limit">
+ <xsl:choose>
+ <xsl:when test="$callout.unicode.start.character = 10102">
+ <xsl:choose>
+ <xsl:when test="$conum = 1">&#10102;</xsl:when>
+ <xsl:when test="$conum = 2">&#10103;</xsl:when>
+ <xsl:when test="$conum = 3">&#10104;</xsl:when>
+ <xsl:when test="$conum = 4">&#10105;</xsl:when>
+ <xsl:when test="$conum = 5">&#10106;</xsl:when>
+ <xsl:when test="$conum = 6">&#10107;</xsl:when>
+ <xsl:when test="$conum = 7">&#10108;</xsl:when>
+ <xsl:when test="$conum = 8">&#10109;</xsl:when>
+ <xsl:when test="$conum = 9">&#10110;</xsl:when>
+ <xsl:when test="$conum = 10">&#10111;</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Don't know how to generate Unicode callouts </xsl:text>
+ <xsl:text>when $callout.unicode.start.character is </xsl:text>
+ <xsl:value-of select="$callout.unicode.start.character"/>
+ </xsl:message>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/changebars.xsl b/docs/xsl-generic/html/changebars.xsl
new file mode 100644
index 00000000..3a2ffe30
--- /dev/null
+++ b/docs/xsl-generic/html/changebars.xsl
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: changebars.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<xsl:import href="docbook.xsl"/>
+
+<xsl:param name="show.revisionflag" select="'1'"/>
+
+<xsl:template name="system.head.content">
+<xsl:param name="node" select="."/>
+
+<style type="text/css">
+<xsl:text>
+div.added { background-color: #ffff99;
+ text-decoration: underline; }
+div.deleted { text-decoration: line-through;
+ background-color: #FF7F7F; }
+div.changed { background-color: #99ff99; }
+div.off { }
+
+span.added { background-color: #ffff99;
+ text-decoration: underline; }
+span.deleted { text-decoration: line-through;
+ background-color: #FF7F7F; }
+span.changed { background-color: #99ff99; }
+span.off { }
+</xsl:text>
+</style>
+</xsl:template>
+
+<xsl:template match="*[@revisionflag]">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'para'
+ or local-name(.) = 'simpara'
+ or local-name(.) = 'formalpara'
+ or local-name(.) = 'section'
+ or local-name(.) = 'sect1'
+ or local-name(.) = 'sect2'
+ or local-name(.) = 'sect3'
+ or local-name(.) = 'sect4'
+ or local-name(.) = 'sect5'
+ or local-name(.) = 'chapter'
+ or local-name(.) = 'preface'
+ or local-name(.) = 'itemizedlist'
+ or local-name(.) = 'varlistentry'
+ or local-name(.) = 'glossary'
+ or local-name(.) = 'bibliography'
+ or local-name(.) = 'index'
+ or local-name(.) = 'appendix'">
+ <div class='{@revisionflag}'>
+ <xsl:apply-imports/>
+ </div>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'phrase'
+ or local-name(.) = 'ulink'
+ or local-name(.) = 'link'
+ or local-name(.) = 'filename'
+ or local-name(.) = 'literal'
+ or local-name(.) = 'member'
+ or local-name(.) = 'glossterm'
+ or local-name(.) = 'sgmltag'
+ or local-name(.) = 'quote'
+ or local-name(.) = 'emphasis'
+ or local-name(.) = 'command'
+ or local-name(.) = 'xref'">
+ <span class='{@revisionflag}'>
+ <xsl:apply-imports/>
+ </span>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'listitem'
+ or local-name(.) = 'entry'
+ or local-name(.) = 'title'">
+ <!-- nop; these are handled directly in the stylesheet -->
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Revisionflag on unexpected element: </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> (Assuming block)</xsl:text>
+ </xsl:message>
+ <div class='{@revisionflag}'>
+ <xsl:apply-imports/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/chunk-code.xsl b/docs/xsl-generic/html/chunk-code.xsl
new file mode 100644
index 00000000..8d59805e
--- /dev/null
+++ b/docs/xsl-generic/html/chunk-code.xsl
@@ -0,0 +1,670 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ exclude-result-prefixes="exsl cf ng db"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: chunk-code.xsl 6942 2007-07-04 04:42:17Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="fn">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename"/>
+ </xsl:variable>
+
+ <!--
+ <xsl:message>
+ <xsl:value-of select="$ischunk"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="$fn"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:message>
+ -->
+
+ <!-- 2003-11-25 by ndw:
+ The following test used to read test="$ischunk != 0 and $fn != ''"
+ I've removed the ischunk part of the test so that href.to.uri and
+ href.from.uri will be fully qualified even if the source or target
+ isn't a chunk. I *think* that if $fn != '' then it's appropriate
+ to put the directory on the front, even if the element isn't a
+ chunk. I could be wrong. -->
+
+ <xsl:if test="$fn != ''">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:if>
+
+ <xsl:value-of select="$fn"/>
+ <!-- You can't add the html.ext here because dbhtml filename= may already -->
+ <!-- have added it. It really does have to be handled in the recursive template -->
+</xsl:template>
+
+<xsl:template match="*" mode="recursive-chunk-filename">
+ <xsl:param name="recursive" select="false()"/>
+
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <!-- if this is the root element, use the root.filename -->
+ <xsl:when test="not(parent::*) and $root.filename != ''">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <!-- Special case -->
+ <xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)">
+ <xsl:choose>
+ <xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)">
+ <!-- * if this legalnotice has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" too it) -->
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this legalnotice does not have an ID, -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ln-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- if there's no dbhtml filename, and if we're to use IDs as -->
+ <!-- filenames, then use the ID to generate the filename. -->
+ <xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*)>0">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="self::set">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::book">
+ <xsl:text>bk</xsl:text>
+ <xsl:number level="any" format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::article">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ar</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::preface">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>pr</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::chapter">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ch</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::appendix">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ap</xsl:text>
+ <xsl:number level="any" format="a" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::part">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>pt</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::reference">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>rn</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::refentry">
+ <xsl:choose>
+ <xsl:when test="parent::reference">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>re</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::colophon">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>co</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::sect1
+ or self::sect2
+ or self::sect3
+ or self::sect4
+ or self::sect5
+ or self::section">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>s</xsl:text>
+ <xsl:number format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::bibliography">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>bi</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::glossary">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>go</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::index">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>ix</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::setindex">
+ <xsl:text>si</xsl:text>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="find.chunks">
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk != 0">
+ <cf:div id="{generate-id()}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </cf:div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="(function-available('exsl:node-set') or
+ contains(system-property('xsl:vendor'),
+ 'Apache Software Foundation'))
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)"
+ mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="set|book|part|preface|chapter|appendix
+ |article
+ |reference|refentry
+ |book/glossary|article/glossary|part/glossary
+ |book/bibliography|article/bibliography|part/bibliography
+ |colophon">
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*)">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:when>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex
+ |book/index
+ |article/index
+ |part/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)>0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri -->
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="destdir">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template match="set|book|part|preface|chapter|appendix
+ |article
+ |reference|refentry
+ |sect1|sect2|sect3|sect4|sect5
+ |section
+ |book/glossary|article/glossary|part/glossary
+ |book/bibliography|article/bibliography|part/bibliography
+ |colophon"
+ mode="enumerate-files">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+</xsl:template>
+
+<xsl:template match="book/index|article/index|part/index"
+ mode="enumerate-files">
+ <xsl:if test="$htmlhelp.output != 1">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="enumerate-files">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:if test="$generate.legalnotice.link != 0">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="mediaobject[imageobject] | inlinemediaobject[imageobject]" mode="enumerate-files">
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject"
+ select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="mediaobject" select="."/>
+
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-files">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/chunk-common.xsl b/docs/xsl-generic/html/chunk-common.xsl
new file mode 100644
index 00000000..4e88e1e4
--- /dev/null
+++ b/docs/xsl-generic/html/chunk-common.xsl
@@ -0,0 +1,1886 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ version="1.0"
+ exclude-result-prefixes="exsl cf ng db">
+
+<!-- ********************************************************************
+ $Id: chunk-common.xsl 7084 2007-07-19 07:17:45Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:param name="onechunk" select="0"/>
+<xsl:param name="refentry.separator" select="0"/>
+<xsl:param name="chunk.fast" select="0"/>
+
+<xsl:key name="genid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:variable name="chunk.hierarchy">
+ <xsl:if test="$chunk.fast != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')">
+ <xsl:message>Computing chunks...</xsl:message>
+ <xsl:apply-templates select="/*" mode="find.chunks"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Fast chunking requires exsl:node-set(). </xsl:text>
+ <xsl:text>Using "slow" chunking.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk-element">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and function-available('exsl:node-set')">
+ <xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv"
+ select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv"
+ select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process-chunk">
+ <xsl:param name="prev" select="."/>
+ <xsl:param name="next" select="."/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunkfn">
+ <xsl:if test="$ischunk='1'">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="$ischunk='0'">
+ <xsl:message>
+ <xsl:text>Error </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> is not a chunk!</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$chunkfn"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="chunk-first-section-with-parent">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <!-- These xpath expressions are really hairy. The trick is to pick sections -->
+ <!-- that are not first children and are not the children of first children -->
+
+ <!-- Break these variables into pieces to work around
+ http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6063 -->
+
+ <xsl:variable name="prev-v1"
+ select="(ancestor::sect1[$chunk.section.depth &gt; 0
+ and preceding-sibling::sect1][1]
+
+ |ancestor::sect2[$chunk.section.depth &gt; 1
+ and preceding-sibling::sect2
+ and parent::sect1[preceding-sibling::sect1]][1]
+
+ |ancestor::sect3[$chunk.section.depth &gt; 2
+ and preceding-sibling::sect3
+ and parent::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |ancestor::sect4[$chunk.section.depth &gt; 3
+ and preceding-sibling::sect4
+ and parent::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |ancestor::sect5[$chunk.section.depth &gt; 4
+ and preceding-sibling::sect5
+ and parent::sect4[preceding-sibling::sect4]
+ and ancestor::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |ancestor::section[$chunk.section.depth &gt; count(ancestor::section)
+ and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/>
+
+ <xsl:variable name="prev-v2"
+ select="(preceding::sect1[$chunk.section.depth &gt; 0
+ and preceding-sibling::sect1][1]
+
+ |preceding::sect2[$chunk.section.depth &gt; 1
+ and preceding-sibling::sect2
+ and parent::sect1[preceding-sibling::sect1]][1]
+
+ |preceding::sect3[$chunk.section.depth &gt; 2
+ and preceding-sibling::sect3
+ and parent::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |preceding::sect4[$chunk.section.depth &gt; 3
+ and preceding-sibling::sect4
+ and parent::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |preceding::sect5[$chunk.section.depth &gt; 4
+ and preceding-sibling::sect5
+ and parent::sect4[preceding-sibling::sect4]
+ and ancestor::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |preceding::section[$chunk.section.depth &gt; count(ancestor::section)
+ and preceding-sibling::section
+ and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/>
+
+ <xsl:variable name="prev"
+ select="(preceding::book[1]
+ |preceding::preface[1]
+ |preceding::chapter[1]
+ |preceding::appendix[1]
+ |preceding::part[1]
+ |preceding::reference[1]
+ |preceding::refentry[1]
+ |preceding::colophon[1]
+ |preceding::article[1]
+ |preceding::bibliography[parent::article or parent::book or parent::part][1]
+ |preceding::glossary[parent::article or parent::book or parent::part][1]
+ |preceding::index[$generate.index != 0]
+ [parent::article or parent::book or parent::part][1]
+ |preceding::setindex[$generate.index != 0][1]
+ |ancestor::set
+ |ancestor::book[1]
+ |ancestor::preface[1]
+ |ancestor::chapter[1]
+ |ancestor::appendix[1]
+ |ancestor::part[1]
+ |ancestor::reference[1]
+ |ancestor::article[1]
+ |$prev-v1
+ |$prev-v2)[last()]"/>
+
+ <xsl:variable name="next-v1"
+ select="(following::sect1[$chunk.section.depth &gt; 0
+ and preceding-sibling::sect1][1]
+
+ |following::sect2[$chunk.section.depth &gt; 1
+ and preceding-sibling::sect2
+ and parent::sect1[preceding-sibling::sect1]][1]
+
+ |following::sect3[$chunk.section.depth &gt; 2
+ and preceding-sibling::sect3
+ and parent::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |following::sect4[$chunk.section.depth &gt; 3
+ and preceding-sibling::sect4
+ and parent::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |following::sect5[$chunk.section.depth &gt; 4
+ and preceding-sibling::sect5
+ and parent::sect4[preceding-sibling::sect4]
+ and ancestor::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |following::section[$chunk.section.depth &gt; count(ancestor::section)
+ and preceding-sibling::section
+ and not(ancestor::section[not(preceding-sibling::section)])][1])[1]"/>
+
+ <xsl:variable name="next-v2"
+ select="(descendant::sect1[$chunk.section.depth &gt; 0
+ and preceding-sibling::sect1][1]
+
+ |descendant::sect2[$chunk.section.depth &gt; 1
+ and preceding-sibling::sect2
+ and parent::sect1[preceding-sibling::sect1]][1]
+
+ |descendant::sect3[$chunk.section.depth &gt; 2
+ and preceding-sibling::sect3
+ and parent::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |descendant::sect4[$chunk.section.depth &gt; 3
+ and preceding-sibling::sect4
+ and parent::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |descendant::sect5[$chunk.section.depth &gt; 4
+ and preceding-sibling::sect5
+ and parent::sect4[preceding-sibling::sect4]
+ and ancestor::sect3[preceding-sibling::sect3]
+ and ancestor::sect2[preceding-sibling::sect2]
+ and ancestor::sect1[preceding-sibling::sect1]][1]
+
+ |descendant::section[$chunk.section.depth &gt; count(ancestor::section)
+ and preceding-sibling::section
+ and not(ancestor::section[not(preceding-sibling::section)])])[1]"/>
+
+ <xsl:variable name="next"
+ select="(following::book[1]
+ |following::preface[1]
+ |following::chapter[1]
+ |following::appendix[1]
+ |following::part[1]
+ |following::reference[1]
+ |following::refentry[1]
+ |following::colophon[1]
+ |following::bibliography[parent::article or parent::book or parent::part][1]
+ |following::glossary[parent::article or parent::book or parent::part][1]
+ |following::index[$generate.index != 0]
+ [parent::article or parent::book or parent::part][1]
+ |following::article[1]
+ |following::setindex[$generate.index != 0][1]
+ |descendant::book[1]
+ |descendant::preface[1]
+ |descendant::chapter[1]
+ |descendant::appendix[1]
+ |descendant::article[1]
+ |descendant::bibliography[parent::article or parent::book or parent::part][1]
+ |descendant::glossary[parent::article or parent::book or parent::part][1]
+ |descendant::index[$generate.index != 0]
+ [parent::article or parent::book or parent::part][1]
+ |descendant::colophon[1]
+ |descendant::setindex[$generate.index != 0][1]
+ |descendant::part[1]
+ |descendant::reference[1]
+ |descendant::refentry[1]
+ |$next-v1
+ |$next-v2)[1]"/>
+
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="chunk-all-sections">
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:variable name="prev-v1"
+ select="(preceding::sect1[$chunk.section.depth &gt; 0][1]
+ |preceding::sect2[$chunk.section.depth &gt; 1][1]
+ |preceding::sect3[$chunk.section.depth &gt; 2][1]
+ |preceding::sect4[$chunk.section.depth &gt; 3][1]
+ |preceding::sect5[$chunk.section.depth &gt; 4][1]
+ |preceding::section[$chunk.section.depth &gt; count(ancestor::section)][1])[last()]"/>
+
+ <xsl:variable name="prev-v2"
+ select="(ancestor::sect1[$chunk.section.depth &gt; 0][1]
+ |ancestor::sect2[$chunk.section.depth &gt; 1][1]
+ |ancestor::sect3[$chunk.section.depth &gt; 2][1]
+ |ancestor::sect4[$chunk.section.depth &gt; 3][1]
+ |ancestor::sect5[$chunk.section.depth &gt; 4][1]
+ |ancestor::section[$chunk.section.depth &gt; count(ancestor::section)][1])[last()]"/>
+
+ <xsl:variable name="prev"
+ select="(preceding::book[1]
+ |preceding::preface[1]
+ |preceding::chapter[1]
+ |preceding::appendix[1]
+ |preceding::part[1]
+ |preceding::reference[1]
+ |preceding::refentry[1]
+ |preceding::colophon[1]
+ |preceding::article[1]
+ |preceding::bibliography[parent::article or parent::book or parent::part][1]
+ |preceding::glossary[parent::article or parent::book or parent::part][1]
+ |preceding::index[$generate.index != 0]
+ [parent::article or parent::book or parent::part][1]
+ |preceding::setindex[$generate.index != 0][1]
+ |ancestor::set
+ |ancestor::book[1]
+ |ancestor::preface[1]
+ |ancestor::chapter[1]
+ |ancestor::appendix[1]
+ |ancestor::part[1]
+ |ancestor::reference[1]
+ |ancestor::article[1]
+ |$prev-v1
+ |$prev-v2)[last()]"/>
+
+ <xsl:variable name="next-v1"
+ select="(following::sect1[$chunk.section.depth &gt; 0][1]
+ |following::sect2[$chunk.section.depth &gt; 1][1]
+ |following::sect3[$chunk.section.depth &gt; 2][1]
+ |following::sect4[$chunk.section.depth &gt; 3][1]
+ |following::sect5[$chunk.section.depth &gt; 4][1]
+ |following::section[$chunk.section.depth &gt; count(ancestor::section)][1])[1]"/>
+
+ <xsl:variable name="next-v2"
+ select="(descendant::sect1[$chunk.section.depth &gt; 0][1]
+ |descendant::sect2[$chunk.section.depth &gt; 1][1]
+ |descendant::sect3[$chunk.section.depth &gt; 2][1]
+ |descendant::sect4[$chunk.section.depth &gt; 3][1]
+ |descendant::sect5[$chunk.section.depth &gt; 4][1]
+ |descendant::section[$chunk.section.depth
+ &gt; count(ancestor::section)][1])[1]"/>
+
+ <xsl:variable name="next"
+ select="(following::book[1]
+ |following::preface[1]
+ |following::chapter[1]
+ |following::appendix[1]
+ |following::part[1]
+ |following::reference[1]
+ |following::refentry[1]
+ |following::colophon[1]
+ |following::bibliography[parent::article or parent::book or parent::part][1]
+ |following::glossary[parent::article or parent::book or parent::part][1]
+ |following::index[$generate.index != 0]
+ [parent::article or parent::book][1]
+ |following::article[1]
+ |following::setindex[$generate.index != 0][1]
+ |descendant::book[1]
+ |descendant::preface[1]
+ |descendant::chapter[1]
+ |descendant::appendix[1]
+ |descendant::article[1]
+ |descendant::bibliography[parent::article or parent::book][1]
+ |descendant::glossary[parent::article or parent::book or parent::part][1]
+ |descendant::index[$generate.index != 0]
+ [parent::article or parent::book][1]
+ |descendant::colophon[1]
+ |descendant::setindex[$generate.index != 0][1]
+ |descendant::part[1]
+ |descendant::reference[1]
+ |descendant::refentry[1]
+ |$next-v1
+ |$next-v2)[1]"/>
+
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:variable name="lots">
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'figure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'table'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'example'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'equation'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'procedure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="string($lots) != ''">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:if test="$chunk.tocs.and.lots.has.title != 0">
+ <h1>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h1>
+ </xsl:if>
+ <xsl:copy-of select="$lots"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$lots"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="make.lot.chunk">
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="lot"/>
+
+ <xsl:if test="string($lot) != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="$lot"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ <!-- And output a link to this file -->
+ <div>
+ <xsl:attribute name="class">
+ <xsl:text>ListofTitles</xsl:text>
+ </xsl:attribute>
+ <a href="{$href}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$type='table'">ListofTables</xsl:when>
+ <xsl:when test="$type='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$type='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$type='example'">ListofExamples</xsl:when>
+ <xsl:when test="$type='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="in.other.chunk">
+ <xsl:param name="chunk" select="."/>
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>in.other.chunk: </xsl:text>
+ <xsl:value-of select="name($chunk)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$chunk = $node"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$is.chunk"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="$chunk = $node">0</xsl:when>
+ <xsl:when test="$is.chunk = 1">1</xsl:when>
+ <xsl:when test="count($node) = 0">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$chunk"/>
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="count.footnotes.in.this.chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="footnotes" select="$node//footnote"/>
+ <xsl:param name="count" select="0"/>
+
+<!--
+ <xsl:message>
+ <xsl:text>count.footnotes.in.this.chunk: </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ </xsl:message>
+-->
+
+ <xsl:variable name="in.other.chunk">
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$node"/>
+ <xsl:with-param name="node" select="$footnotes[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="count($footnotes) = 0">
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$in.other.chunk != 0">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$footnotes[1]/ancestor::table
+ |$footnotes[1]/ancestor::informaltable">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes.in.this.chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="footnotes" select="$node//footnote"/>
+
+<!--
+ <xsl:message>process.footnotes.in.this.chunk</xsl:message>
+-->
+
+ <xsl:variable name="in.other.chunk">
+ <xsl:call-template name="in.other.chunk">
+ <xsl:with-param name="chunk" select="$node"/>
+ <xsl:with-param name="node" select="$footnotes[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="count($footnotes) = 0">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$in.other.chunk != 0">
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$footnotes[1]/ancestor::table
+ |$footnotes[1]/ancestor::informaltable">
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$footnotes[1]"
+ mode="process.footnote.mode"/>
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="footnotes"
+ select="$footnotes[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="fcount">
+ <xsl:call-template name="count.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="footnotes" select="$footnotes"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> fcount: </xsl:text>
+ <xsl:value-of select="$fcount"/>
+ </xsl:message>
+-->
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="$fcount &gt; 0">
+ <div class="footnotes">
+ <br/>
+ <hr width="100" align="left"/>
+ <xsl:call-template name="process.footnotes.in.this.chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="footnotes" select="$footnotes"/>
+ </xsl:call-template>
+ </div>
+ </xsl:if>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <div class="annotation-list">
+ <div class="annotation-nocss">
+ <p>The following annotations are from this essay. You are seeing
+ them here because your browser doesn’t support the user-interface
+ techniques used to make them appear as ‘popups’ on modern browsers.</p>
+ </div>
+
+ <xsl:apply-templates select="//annotation"
+ mode="annotation-popup"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.chunk.footnotes">
+ <xsl:variable name="is.chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+ <xsl:if test="$is.chunk = 1">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <!-- returns 1 if $node is a chunk -->
+
+ <!-- ==================================================================== -->
+ <!-- What's a chunk?
+
+ The root element
+ appendix
+ article
+ bibliography in article or part or book
+ book
+ chapter
+ colophon
+ glossary in article or part or book
+ index in article or part or book
+ part
+ preface
+ refentry
+ reference
+ sect{1,2,3,4,5} if position()>1 && depth < chunk.section.depth
+ section if position()>1 && depth < chunk.section.depth
+ set
+ setindex
+ -->
+ <!-- ==================================================================== -->
+
+<!--
+ <xsl:message>
+ <xsl:text>chunk: </xsl:text>
+ <xsl:value-of select="name($node)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$node/@id"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text> csd: </xsl:text>
+ <xsl:value-of select="$chunk.section.depth"/>
+ <xsl:text> cfs: </xsl:text>
+ <xsl:value-of select="$chunk.first.sections"/>
+ <xsl:text> ps: </xsl:text>
+ <xsl:value-of select="count($node/parent::section)"/>
+ <xsl:text> prs: </xsl:text>
+ <xsl:value-of select="count($node/preceding-sibling::section)"/>
+ </xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="not($node/parent::*)">1</xsl:when>
+
+ <xsl:when test="local-name($node) = 'sect1'
+ and $chunk.section.depth &gt;= 1
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect1) &gt; 0)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect2'
+ and $chunk.section.depth &gt;= 2
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect2) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect3'
+ and $chunk.section.depth &gt;= 3
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect3) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect4'
+ and $chunk.section.depth &gt;= 4
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect4) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'sect5'
+ and $chunk.section.depth &gt;= 5
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::sect5) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($node) = 'section'
+ and $chunk.section.depth &gt;= count($node/ancestor::section)+1
+ and ($chunk.first.sections != 0
+ or count($node/preceding-sibling::section) &gt; 0)">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="local-name($node)='preface'">1</xsl:when>
+ <xsl:when test="local-name($node)='chapter'">1</xsl:when>
+ <xsl:when test="local-name($node)='appendix'">1</xsl:when>
+ <xsl:when test="local-name($node)='article'">1</xsl:when>
+ <xsl:when test="local-name($node)='part'">1</xsl:when>
+ <xsl:when test="local-name($node)='reference'">1</xsl:when>
+ <xsl:when test="local-name($node)='refentry'">1</xsl:when>
+ <xsl:when test="local-name($node)='index' and ($generate.index != 0 or count($node/*) > 0)
+ and (local-name($node/parent::*) = 'article'
+ or local-name($node/parent::*) = 'book'
+ or local-name($node/parent::*) = 'part'
+ )">1</xsl:when>
+ <xsl:when test="local-name($node)='bibliography'
+ and (local-name($node/parent::*) = 'article'
+ or local-name($node/parent::*) = 'book'
+ or local-name($node/parent::*) = 'part'
+ )">1</xsl:when>
+ <xsl:when test="local-name($node)='glossary'
+ and (local-name($node/parent::*) = 'article'
+ or local-name($node/parent::*) = 'book'
+ or local-name($node/parent::*) = 'part'
+ )">1</xsl:when>
+ <xsl:when test="local-name($node)='colophon'">1</xsl:when>
+ <xsl:when test="local-name($node)='book'">1</xsl:when>
+ <xsl:when test="local-name($node)='set'">1</xsl:when>
+ <xsl:when test="local-name($node)='setindex'">1</xsl:when>
+ <xsl:when test="local-name($node)='legalnotice'
+ and $generate.legalnotice.link != 0">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:apply-templates mode="chunk-filename" select="$object"/>
+
+ <xsl:if test="$ischunk='0'">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="href.target">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:param name="toc-context" select="."/>
+ <!-- * If $toc-context contains some node other than the current node, -->
+ <!-- * it means we're processing a link in a TOC. In that case, to -->
+ <!-- * ensure the link will work correctly, we need to take a look at -->
+ <!-- * where the file containing the TOC will get written, and where -->
+ <!-- * the file that's being linked to will get written. -->
+ <xsl:variable name="toc-output-dir">
+ <xsl:if test="not($toc-context = .)">
+ <!-- * Get the $toc-context node and all its ancestors, look down -->
+ <!-- * through them to find the last/closest node to the -->
+ <!-- * toc-context node that has a "dbhtml dir" PI, and get the -->
+ <!-- * directory name from that. That's the name of the directory -->
+ <!-- * to which the current toc output file will get written. -->
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context"
+ select="$toc-context/ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="linked-file-output-dir">
+ <xsl:if test="not($toc-context = .)">
+ <!-- * Get the current node and all its ancestors, look down -->
+ <!-- * through them to find the last/closest node to the current -->
+ <!-- * node that has a "dbhtml dir" PI, and get the directory name -->
+ <!-- * from that. That's the name of the directory to which the -->
+ <!-- * file that's being linked to will get written. -->
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context"
+ select="ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="href.to.uri">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href.from.uri">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- * <xsl:message>toc-context: <xsl:value-of select="local-name($toc-context)"/></xsl:message> -->
+ <!-- * <xsl:message>node: <xsl:value-of select="local-name(.)"/></xsl:message> -->
+ <!-- * <xsl:message>context: <xsl:value-of select="local-name($context)"/></xsl:message> -->
+ <!-- * <xsl:message>object: <xsl:value-of select="local-name($object)"/></xsl:message> -->
+ <!-- * <xsl:message>toc-output-dir: <xsl:value-of select="$toc-output-dir"/></xsl:message> -->
+ <!-- * <xsl:message>linked-file-output-dir: <xsl:value-of select="$linked-file-output-dir"/></xsl:message> -->
+ <!-- * <xsl:message>href.to.uri: <xsl:value-of select="$href.to.uri"/></xsl:message> -->
+ <!-- * <xsl:message>href.from.uri: <xsl:value-of select="$href.from.uri"/></xsl:message> -->
+ <xsl:variable name="href.to">
+ <xsl:choose>
+ <!-- * 2007-07-19, MikeSmith: Added the following conditional to -->
+ <!-- * deal with a problem case for links in TOCs. It checks to see -->
+ <!-- * if the output dir that a TOC will get written to is -->
+ <!-- * different from the output dir of the file being linked to. -->
+ <!-- * If it is different, we do not call trim.common.uri.paths. -->
+ <!-- * -->
+ <!-- * Reason why I added that conditional is: I ran into a bug for -->
+ <!-- * this case: -->
+ <!-- * -->
+ <!-- * 1. we are chunking into separate dirs -->
+ <!-- * -->
+ <!-- * 2. output for the TOC is written to current dir, but the file -->
+ <!-- * being linked to is written to some subdir "foo". -->
+ <!-- * -->
+ <!-- * For that case, links to that file in that TOC did not show -->
+ <!-- * the correct path - they omitted the "foo". -->
+ <!-- * -->
+ <!-- * The cause of that problem was that the trim.common.uri.paths -->
+ <!-- * template[1] was being called under all conditions. But it's -->
+ <!-- * apparent that we don't want to call trim.common.uri.paths in -->
+ <!-- * the case where a linked file is being written to a different -->
+ <!-- * directory than the TOC that contains the link, because doing -->
+ <!-- * so will cause a necessary (not redundant) directory-name -->
+ <!-- * part of the link to get inadvertently trimmed, resulting in -->
+ <!-- * a broken link to that file. Thus, added the conditional. -->
+ <!-- * -->
+ <!-- * [1] The purpose of the trim.common.uri.paths template is to -->
+ <!-- * prevent cases where, if we didn't call it, we end up with -->
+ <!-- * unnecessary, redundant directory names getting output; for -->
+ <!-- * example, "foo/foo/refname.html". -->
+ <xsl:when test="not($toc-output-dir = $linked-file-output-dir)">
+ <xsl:value-of select="$href.to.uri"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="href.from">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$href.from"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$href.to"/>
+ </xsl:variable>
+ <!--
+ <xsl:message>
+ <xsl:text>In </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="$href.from"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="$depth"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="name($object)"/>
+ <xsl:text> href=</xsl:text>
+ <xsl:value-of select="$href"/>
+ </xsl:message>
+ -->
+ <xsl:value-of select="$href"/>
+</xsl:template>
+
+<!-- Returns the complete olink href value if found -->
+<!-- Must take into account any dbhtml dir of the chunk containing the olink -->
+<xsl:template name="make.olink.href">
+ <xsl:param name="olink.key" select="''"/>
+ <xsl:param name="target.database"/>
+
+ <xsl:if test="$olink.key != ''">
+ <xsl:variable name="target.href" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetptr-key', $olink.key)/@href" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- an olink starting point may be in a subdirectory, so need
+ the "from" reference point to compute a relative path -->
+
+ <xsl:variable name="from.href">
+ <xsl:call-template name="olink.from.uri">
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="object" select="."/>
+ <xsl:with-param name="object.targetdoc" select="$current.docid"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- If the from.href has directory path, then must "../" upward
+ to document level -->
+ <xsl:variable name="upward.from.path">
+ <xsl:call-template name="upward.path">
+ <xsl:with-param name="path" select="$from.href"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="targetdoc">
+ <xsl:value-of select="substring-before($olink.key, '/')"/>
+ </xsl:variable>
+
+ <!-- Does the target database use a sitemap? -->
+ <xsl:variable name="use.sitemap">
+ <xsl:choose>
+ <xsl:when test="$target.database//sitemap">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+
+ <!-- Get the baseuri for this targetptr -->
+ <xsl:variable name="baseuri" >
+ <xsl:choose>
+ <!-- Does the database use a sitemap? -->
+ <xsl:when test="$use.sitemap != 0" >
+ <xsl:choose>
+ <!-- Was current.docid parameter set? -->
+ <xsl:when test="$current.docid != ''">
+ <!-- Was it found in the database? -->
+ <xsl:variable name="currentdoc.key" >
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key',
+ $current.docid)/@targetdoc" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$currentdoc.key != ''">
+ <xsl:for-each select="$target.database" >
+ <xsl:call-template name="targetpath" >
+ <xsl:with-param name="dirnode"
+ select="key('targetdoc-key', $current.docid)/parent::dir"/>
+ <xsl:with-param name="targetdoc" select="$targetdoc"/>
+ </xsl:call-template>
+ </xsl:for-each >
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink error: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path because $current.docid '</xsl:text>
+ <xsl:value-of select="$current.docid"/>
+ <xsl:text>' not found in target database.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Olink warning: cannot compute relative </xsl:text>
+ <xsl:text>sitemap path without $current.docid parameter</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- In either case, add baseuri from its document entry-->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:when>
+ <!-- No database sitemap in use -->
+ <xsl:otherwise>
+ <!-- Just use any baseuri from its document entry -->
+ <xsl:variable name="docbaseuri">
+ <xsl:for-each select="$target.database" >
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$docbaseuri != ''" >
+ <xsl:value-of select="$docbaseuri"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Form the href information -->
+ <xsl:if test="not(contains($baseuri, ':'))">
+ <!-- if not an absolute uri, add upward path from olink chunk -->
+ <xsl:value-of select="$upward.from.path"/>
+ </xsl:if>
+
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and
+ translate(substring($baseuri, string-length($baseuri) - 3),
+ 'PDF', 'pdf') = '.pdf'
+ and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<!-- Computes "../" to reach top -->
+<xsl:template name="upward.path">
+ <xsl:param name="path" select="''"/>
+ <xsl:choose>
+ <!-- Don't bother with absolute uris -->
+ <xsl:when test="contains($path, ':')"/>
+ <xsl:when test="starts-with($path, '/')"/>
+ <xsl:when test="contains($path, '/')">
+ <xsl:text>../</xsl:text>
+ <xsl:call-template name="upward.path">
+ <xsl:with-param name="path" select="substring-after($path, '/')"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="html.head">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:variable name="this" select="."/>
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content"/>
+
+ <xsl:if test="$home">
+ <link rel="start">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$home"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$home"
+ mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$up">
+ <link rel="up">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$up"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$up" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$prev">
+ <link rel="prev">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$prev" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$next">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$next" mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$html.extra.head.links != 0">
+ <xsl:for-each select="//part
+ |//reference
+ |//preface
+ |//chapter
+ |//article
+ |//refentry
+ |//appendix[not(parent::article)]|appendix
+ |//glossary[not(parent::article)]|glossary
+ |//index[not(parent::article)]|index">
+ <link rel="{local-name(.)}">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="section|sect1|refsection|refsect1">
+ <link>
+ <xsl:attribute name="rel">
+ <xsl:choose>
+ <xsl:when test="local-name($this) = 'section'
+ or local-name($this) = 'refsection'">
+ <xsl:value-of select="'subsection'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'section'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="sect2|sect3|sect4|sect5|refsect2|refsect3">
+ <link rel="subsection">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$this"/>
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+ </xsl:if>
+
+ <!-- * if we have a legalnotice and user wants it output as a -->
+ <!-- * separate page and $html.head.legalnotice.link.types is -->
+ <!-- * non-empty, we generate a link or links for each value in -->
+ <!-- * $html.head.legalnotice.link.types -->
+ <xsl:if test="//legalnotice
+ and not($generate.legalnotice.link = 0)
+ and not($html.head.legalnotice.link.types = '')">
+ <xsl:call-template name="make.legalnotice.head.links"/>
+ </xsl:if>
+
+ <xsl:call-template name="user.head.content"/>
+ </head>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="header.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <xsl:variable name="row1" select="$navig.showtitles != 0"/>
+ <xsl:variable name="row2" select="count($prev) &gt; 0
+ or (count($up) &gt; 0
+ and generate-id($up) != generate-id($home)
+ and $navig.showtitles != 0)
+ or count($next) &gt; 0"/>
+
+ <xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'">
+ <div class="navheader">
+ <xsl:if test="$row1 or $row2">
+ <table width="100%" summary="Navigation header">
+ <xsl:if test="$row1">
+ <tr>
+ <th colspan="3" align="center">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </th>
+ </tr>
+ </xsl:if>
+
+ <xsl:if test="$row2">
+ <tr>
+ <td width="20%" align="left">
+ <xsl:if test="count($prev)>0">
+ <a accesskey="p">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'prev'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <th width="60%" align="center">
+ <xsl:choose>
+ <xsl:when test="count($up) > 0
+ and generate-id($up) != generate-id($home)
+ and $navig.showtitles != 0">
+ <xsl:apply-templates select="$up" mode="object.title.markup"/>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </th>
+ <td width="20%" align="right">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="count($next)>0">
+ <a accesskey="n">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </xsl:if>
+ <xsl:if test="$header.rule != 0">
+ <hr/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="footer.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <xsl:variable name="home" select="/*[1]"/>
+ <xsl:variable name="up" select="parent::*"/>
+
+ <xsl:variable name="row1" select="count($prev) &gt; 0
+ or count($up) &gt; 0
+ or count($next) &gt; 0"/>
+
+ <xsl:variable name="row2" select="($prev and $navig.showtitles != 0)
+ or (generate-id($home) != generate-id(.)
+ or $nav.context = 'toc')
+ or ($chunk.tocs.and.lots != 0
+ and $nav.context != 'toc')
+ or ($next and $navig.showtitles != 0)"/>
+
+ <xsl:if test="$suppress.navigation = '0' and $suppress.footer.navigation = '0'">
+ <div class="navfooter">
+ <xsl:if test="$footer.rule != 0">
+ <hr/>
+ </xsl:if>
+
+ <xsl:if test="$row1 or $row2">
+ <table width="100%" summary="Navigation footer">
+ <xsl:if test="$row1">
+ <tr>
+ <td width="40%" align="left">
+ <xsl:if test="count($prev)>0">
+ <a accesskey="p">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$prev"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'prev'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="20%" align="center">
+ <xsl:choose>
+ <xsl:when test="count($up)&gt;0
+ and generate-id($up) != generate-id($home)">
+ <a accesskey="u">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$up"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'up'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td width="40%" align="right">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="count($next)>0">
+ <a accesskey="n">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$next"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+
+ <xsl:if test="$row2">
+ <tr>
+ <td width="40%" align="left" valign="top">
+ <xsl:if test="$navig.showtitles != 0">
+ <xsl:apply-templates select="$prev" mode="object.title.markup"/>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td width="20%" align="center">
+ <xsl:choose>
+ <xsl:when test="$home != . or $nav.context = 'toc'">
+ <a accesskey="h">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$home"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="navig.content">
+ <xsl:with-param name="direction" select="'home'"/>
+ </xsl:call-template>
+ </a>
+ <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <xsl:text>&#160;|&#160;</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <a accesskey="t">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="/*[1]"
+ mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:attribute>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'nav-toc'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </td>
+ <td width="40%" align="right" valign="top">
+ <xsl:text>&#160;</xsl:text>
+ <xsl:if test="$navig.showtitles != 0">
+ <xsl:apply-templates select="$next" mode="object.title.markup"/>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="navig.content">
+ <xsl:param name="direction" select="next"/>
+ <xsl:variable name="navtext">
+ <xsl:choose>
+ <xsl:when test="$direction = 'prev'">
+ <xsl:call-template name="gentext.nav.prev"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'next'">
+ <xsl:call-template name="gentext.nav.next"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'up'">
+ <xsl:call-template name="gentext.nav.up"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'home'">
+ <xsl:call-template name="gentext.nav.home"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>xxx</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$navig.graphics != 0">
+ <img>
+ <xsl:attribute name="src">
+ <xsl:value-of select="$navig.graphics.path"/>
+ <xsl:value-of select="$direction"/>
+ <xsl:value-of select="$navig.graphics.extension"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$navtext"/>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$navtext"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * The following template assumes that the first legalnotice -->
+<!-- * instance found in a document applies to the contents of the -->
+<!-- * entire document. It generates an HTML link in each chunk, back -->
+<!-- * to the file containing the contents of the first legalnotice. -->
+<!-- * -->
+<!-- * Actually, it may generate multiple link instances in each chunk, -->
+<!-- * because it walks through the space-separated list of link -->
+<!-- * types specified in the $html.head.legalnotice.link.types param, -->
+<!-- * popping off link types and generating links for them until it -->
+<!-- * depletes the list. -->
+
+<xsl:template name="make.legalnotice.head.links">
+ <!-- * the following ID is used as part of the legalnotice filename; -->
+ <!-- * we need it in order to construct the filename for use in the -->
+ <!-- * value of the href attribute on the link -->
+
+ <xsl:param name="ln-node" select="(//legalnotice)[1]"/>
+
+ <xsl:param name="linktype">
+ <xsl:choose>
+ <xsl:when test="contains($html.head.legalnotice.link.types, ' ')">
+ <xsl:value-of
+ select="normalize-space(
+ substring-before($html.head.legalnotice.link.types, ' '))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.head.legalnotice.link.types"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param
+ name="remaining.linktypes"
+ select="concat(
+ normalize-space(
+ substring-after($html.head.legalnotice.link.types, ' ')),' ')"/>
+ <xsl:if test="not($linktype = '')">
+
+ <!-- Compute name of legalnotice file (see titlepage.xsl) -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename">
+ <xsl:with-param name="node" select="$ln-node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <link rel="{$linktype}">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$file"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="(//legalnotice)[1]"
+ mode="object.title.markup.textonly"/>
+ </xsl:attribute>
+ </link>
+ <xsl:call-template name="make.legalnotice.head.links">
+ <!-- * pop the next value off the list of link types -->
+ <xsl:with-param
+ name="linktype"
+ select="substring-before($remaining.linktypes, ' ')"/>
+ <!-- * remove the link type from the list of remaining link types -->
+ <xsl:with-param
+ name="remaining.linktypes"
+ select="substring-after($remaining.linktypes, ' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="chunk-element-content">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="nav.context"/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:call-template name="user.preroot"/>
+
+ <html>
+ <xsl:call-template name="html.head">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.navigation"/>
+
+ <xsl:call-template name="header.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.header.content"/>
+
+ <xsl:copy-of select="$content"/>
+
+ <xsl:call-template name="user.footer.content"/>
+
+ <xsl:call-template name="footer.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.footer.navigation"/>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="generate.manifest">
+ <xsl:param name="node" select="/"/>
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:if test="$manifest.in.base.dir != 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:value-of select="$manifest"/>
+ </xsl:with-param>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="$node" mode="enumerate-files"/>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$chunker.output.encoding"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-dir">
+ <xsl:param name="context" select="."/>
+ <!-- directories are now inherited from previous levels -->
+ <xsl:variable name="ppath">
+ <xsl:if test="$context/parent::*">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$context/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="path">
+ <xsl:call-template name="pi.dbhtml_dir">
+ <xsl:with-param name="node" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$path = ''">
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="$path"/>
+ <xsl:text>/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/chunk.xsl b/docs/xsl-generic/html/chunk.xsl
new file mode 100644
index 00000000..a89e2421
--- /dev/null
+++ b/docs/xsl-generic/html/chunk.xsl
@@ -0,0 +1,52 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ version="1.0"
+ exclude-result-prefixes="exsl">
+
+<!-- ********************************************************************
+ $Id: chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- First import the non-chunking templates that format elements
+ within each chunk file. In a customization, you should
+ create a separate non-chunking customization layer such
+ as mydocbook.xsl that imports the original docbook.xsl and
+ customizes any presentation templates. Then your chunking
+ customization should import mydocbook.xsl instead of
+ docbook.xsl. -->
+<xsl:import href="docbook.xsl"/>
+
+<!-- chunk-common.xsl contains all the named templates for chunking.
+ In a customization file, you import chunk-common.xsl, then
+ add any customized chunking templates of the same name.
+ They will have import precedence over the original
+ chunking templates in chunk-common.xsl. -->
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- The manifest.xsl module is no longer imported because its
+ templates were moved into chunk-common and chunk-code -->
+
+<!-- chunk-code.xsl contains all the chunking templates that use
+ a match attribute. In a customization it should be referenced
+ using <xsl:include> instead of <xsl:import>, and then add
+ any customized chunking templates with match attributes. But be sure
+ to add a priority="1" to such customized templates to resolve
+ its conflict with the original, since they have the
+ same import precedence.
+
+ Using xsl:include prevents adding another layer
+ of import precedence, which would cause any
+ customizations that use xsl:apply-imports to wrongly
+ apply the chunking version instead of the original
+ non-chunking version to format an element. -->
+<xsl:include href="chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/chunker.xsl b/docs/xsl-generic/html/chunker.xsl
new file mode 100644
index 00000000..a66d1044
--- /dev/null
+++ b/docs/xsl-generic/html/chunker.xsl
@@ -0,0 +1,439 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:redirect="http://xml.apache.org/xalan/redirect"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc"
+ extension-element-prefixes="saxon redirect lxslt exsl">
+
+<!-- ********************************************************************
+ $Id: chunker.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This stylesheet works with XSLT implementations that support -->
+<!-- exsl:document, saxon:output, or Xalan's redirect:write -->
+<!-- Note: Only Saxon 6.4.2 or later is supported. -->
+
+<xsl:param name="chunker.output.method" select="'html'"/>
+<xsl:param name="chunker.output.encoding" select="'ISO-8859-1'"/>
+<xsl:param name="chunker.output.indent" select="'no'"/>
+<xsl:param name="chunker.output.omit-xml-declaration" select="'no'"/>
+<xsl:param name="chunker.output.standalone" select="'no'"/>
+<xsl:param name="chunker.output.doctype-public" select="''"/>
+<xsl:param name="chunker.output.doctype-system" select="''"/>
+<xsl:param name="chunker.output.media-type" select="''"/>
+<xsl:param name="chunker.output.cdata-section-elements" select="''"/>
+<xsl:param name="chunker.output.quiet" select="0"/>
+
+<xsl:param name="saxon.character.representation" select="'entity;decimal'"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make-relative-filename">
+ <xsl:param name="base.dir" select="'./'"/>
+ <xsl:param name="base.name" select="''"/>
+
+ <xsl:choose>
+ <!-- put Saxon first to work around a bug in libxslt -->
+ <xsl:when test="element-available('saxon:output')">
+ <!-- Saxon doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:when test="element-available('exsl:document')">
+ <!-- EXSL document does make the chunks relative, I think -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*) = 0">
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="element-available('redirect:write')">
+ <!-- Xalan doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Don't know how to chunk with </xsl:text>
+ <xsl:value-of select="system-property('xsl:vendor')"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+ <xsl:param name="suppress-context-node-name" select="0"/>
+ <xsl:param name="message-prolog"/>
+ <xsl:param name="message-epilog"/>
+
+ <xsl:param name="method" select="$chunker.output.method"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="indent" select="$chunker.output.indent"/>
+ <xsl:param name="omit-xml-declaration"
+ select="$chunker.output.omit-xml-declaration"/>
+ <xsl:param name="standalone" select="$chunker.output.standalone"/>
+ <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/>
+ <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="cdata-section-elements"
+ select="$chunker.output.cdata-section-elements"/>
+
+ <xsl:param name="content"/>
+
+ <xsl:if test="$quiet = 0">
+ <xsl:message>
+ <xsl:if test="not($message-prolog = '')">
+ <xsl:value-of select="$message-prolog"/>
+ </xsl:if>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != '' and $suppress-context-node-name = 0">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="not($message-epilog = '')">
+ <xsl:value-of select="$message-epilog"/>
+ </xsl:if>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="element-available('exsl:document')">
+ <xsl:choose>
+ <!-- Handle the permutations ... -->
+ <xsl:when test="$media-type != ''">
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-public="{$doctype-public}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-public="{$doctype-public}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <exsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="element-available('saxon:output')">
+ <xsl:choose>
+ <!-- Handle the permutations ... -->
+ <xsl:when test="$media-type != ''">
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-public="{$doctype-public}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ media-type="{$media-type}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$doctype-public != '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public != '' and $doctype-system = ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-public="{$doctype-public}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="$doctype-public = '' and $doctype-system != ''">
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ doctype-system="{$doctype-system}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> -->
+ <saxon:output saxon:character-representation="{$saxon.character.representation}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ omit-xml-declaration="{$omit-xml-declaration}"
+ cdata-section-elements="{$cdata-section-elements}"
+ standalone="{$standalone}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="element-available('redirect:write')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="system-property('xsl:vendor')"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk.with.doctype">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+
+ <xsl:param name="method" select="$chunker.output.method"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="indent" select="$chunker.output.indent"/>
+ <xsl:param name="omit-xml-declaration"
+ select="$chunker.output.omit-xml-declaration"/>
+ <xsl:param name="standalone" select="$chunker.output.standalone"/>
+ <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/>
+ <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="cdata-section-elements"
+ select="$chunker.output.cdata-section-elements"/>
+
+ <xsl:param name="content"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$quiet"/>
+ <xsl:with-param name="method" select="$method"/>
+ <xsl:with-param name="encoding" select="$encoding"/>
+ <xsl:with-param name="indent" select="$indent"/>
+ <xsl:with-param name="omit-xml-declaration" select="$omit-xml-declaration"/>
+ <xsl:with-param name="standalone" select="$standalone"/>
+ <xsl:with-param name="doctype-public" select="$doctype-public"/>
+ <xsl:with-param name="doctype-system" select="$doctype-system"/>
+ <xsl:with-param name="media-type" select="$media-type"/>
+ <xsl:with-param name="cdata-section-elements" select="$cdata-section-elements"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="write.text.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="quiet" select="$chunker.output.quiet"/>
+ <xsl:param name="suppress-context-node-name" select="0"/>
+ <xsl:param name="message-prolog"/>
+ <xsl:param name="message-epilog"/>
+ <xsl:param name="method" select="'text'"/>
+ <xsl:param name="encoding" select="$chunker.output.encoding"/>
+ <xsl:param name="media-type" select="$chunker.output.media-type"/>
+ <xsl:param name="content"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$quiet"/>
+ <xsl:with-param name="suppress-context-node-name" select="$suppress-context-node-name"/>
+ <xsl:with-param name="message-prolog" select="$message-prolog"/>
+ <xsl:with-param name="message-epilog" select="$message-epilog"/>
+ <xsl:with-param name="method" select="$method"/>
+ <xsl:with-param name="encoding" select="$encoding"/>
+ <xsl:with-param name="indent" select="'no'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'no'"/>
+ <xsl:with-param name="standalone" select="'no'"/>
+ <xsl:with-param name="doctype-public"/>
+ <xsl:with-param name="doctype-system"/>
+ <xsl:with-param name="media-type" select="$media-type"/>
+ <xsl:with-param name="cdata-section-elements"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/chunkfast.xsl b/docs/xsl-generic/html/chunkfast.xsl
new file mode 100644
index 00000000..da62af12
--- /dev/null
+++ b/docs/xsl-generic/html/chunkfast.xsl
@@ -0,0 +1,72 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0"
+ version="1.0"
+ exclude-result-prefixes="cf exsl">
+
+<!-- ********************************************************************
+ $Id: chunkfast.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="chunk.xsl"/>
+<xsl:param name="chunk.fast" select="1"/>
+
+<xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk-element">
+ <xsl:choose>
+ <xsl:when test="$chunk.fast != 0 and function-available('exsl:node-set')">
+ <xsl:variable name="genid" select="generate-id()"/>
+
+ <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/>
+
+ <xsl:variable name="prevdiv"
+ select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
+ <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/>
+
+ <xsl:variable name="nextdiv"
+ select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
+ <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/>
+
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and not(parent::*)">
+ <xsl:call-template name="chunk-all-sections"/>
+ </xsl:when>
+ <xsl:when test="$onechunk != 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:when test="$chunk.first.sections = 0">
+ <xsl:call-template name="chunk-first-section-with-parent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="chunk-all-sections"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/chunktoc.xsl b/docs/xsl-generic/html/chunktoc.xsl
new file mode 100644
index 00000000..fd49b111
--- /dev/null
+++ b/docs/xsl-generic/html/chunktoc.xsl
@@ -0,0 +1,468 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: chunktoc.xsl 6942 2007-07-04 04:42:17Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="docbook.xsl"/>
+<xsl:import href="chunk-common.xsl"/>
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <!-- returns 1 if $node is a chunk -->
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:choose>
+ <xsl:when test="$chunks//tocentry[@linkend=$id]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/>
+ <xsl:variable name="filename">
+ <xsl:call-template name="pi.dbhtml_filename">
+ <xsl:with-param name="node" select="$chunk"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="chunk-filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process-chunk">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
+
+ <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/>
+ <xsl:variable name="prev-id"
+ select="($chunk/preceding::tocentry
+ |$chunk/ancestor::tocentry)[last()]/@linkend"/>
+ <xsl:variable name="next-id"
+ select="($chunk/following::tocentry
+ |$chunk/child::tocentry)[1]/@linkend"/>
+
+ <xsl:variable name="prev" select="key('id',$prev-id)"/>
+ <xsl:variable name="next" select="key('id',$next-id)"/>
+
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunkfn">
+ <xsl:if test="$ischunk='1'">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$chunkfn"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book/appendix">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book/glossary">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="book/bibliography">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="dedication" mode="dedication">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="preface|chapter">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="part|reference">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="colophon">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article/appendix">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article/glossary">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="article/bibliography">
+ <xsl:call-template name="process-chunk"/>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk != 0">
+ <xsl:call-template name="process-chunk"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-imports/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex
+ |book/index
+ |article/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)>0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+ <xsl:choose>
+ <xsl:when test="$chunk.toc = ''">
+ <xsl:message terminate="yes">
+ <xsl:text>The chunk.toc file is not set.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="key('id',$rootid)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates select="/" mode="process.root"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template name="make.lots">
+ <xsl:param name="toc.params" select="''"/>
+ <xsl:param name="toc"/>
+
+ <xsl:variable name="lots">
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:copy-of select="$toc"/>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'figure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'figure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'figure'"/>
+ <xsl:with-param name="nodes" select=".//figure"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'table')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'table'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'table'"/>
+ <xsl:with-param name="nodes" select=".//table"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'example')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'example'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'example'"/>
+ <xsl:with-param name="nodes" select=".//example"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'equation')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'equation'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'equation'"/>
+ <xsl:with-param name="nodes" select=".//equation"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="contains($toc.params, 'procedure')">
+ <xsl:choose>
+ <xsl:when test="$chunk.separate.lots != '0'">
+ <xsl:call-template name="make.lot.chunk">
+ <xsl:with-param name="type" select="'procedure'"/>
+ <xsl:with-param name="lot">
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="list.of.titles">
+ <xsl:with-param name="titles" select="'procedure'"/>
+ <xsl:with-param name="nodes" select=".//procedure[title]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="string($lots) != ''">
+ <xsl:choose>
+ <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:apply-templates select="." mode="recursive-chunk-filename">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <h1>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h1>
+ <xsl:copy-of select="$lots"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$lots"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="make.lot.chunk">
+ <xsl:param name="type" select="''"/>
+ <xsl:param name="lot"/>
+
+ <xsl:if test="string($lot) != ''">
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="dbhtml-dir"/>
+ <xsl:value-of select="$type"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="chunk-element-content">
+ <xsl:with-param name="prev" select="/foo"/>
+ <xsl:with-param name="next" select="/foo"/>
+ <xsl:with-param name="nav.context" select="'toc'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="$lot"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ </xsl:call-template>
+ <!-- And output a link to this file -->
+ <div>
+ <xsl:attribute name="class">
+ <xsl:text>ListofTitles</xsl:text>
+ </xsl:attribute>
+ <a href="{$href}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">
+ <xsl:choose>
+ <xsl:when test="$type='table'">ListofTables</xsl:when>
+ <xsl:when test="$type='figure'">ListofFigures</xsl:when>
+ <xsl:when test="$type='equation'">ListofEquations</xsl:when>
+ <xsl:when test="$type='example'">ListofExamples</xsl:when>
+ <xsl:when test="$type='procedure'">ListofProcedures</xsl:when>
+ <xsl:otherwise>ListofUnknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/component.xsl b/docs/xsl-generic/html/component.xsl
new file mode 100644
index 00000000..e12eaeb6
--- /dev/null
+++ b/docs/xsl-generic/html/component.xsl
@@ -0,0 +1,401 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: component.xsl 7000 2007-07-10 20:41:35Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="component.title">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="ancestor::section">
+ <xsl:value-of select="count(ancestor::section)+1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::sect5">6</xsl:when>
+ <xsl:when test="ancestor::sect4">5</xsl:when>
+ <xsl:when test="ancestor::sect3">4</xsl:when>
+ <xsl:when test="ancestor::sect2">3</xsl:when>
+ <xsl:when test="ancestor::sect1">2</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Let's handle the case where a component (bibliography, for example)
+ occurs inside a section; will we need parameters for this? -->
+
+ <xsl:element name="h{$level+1}">
+ <xsl:attribute name="class">title</xsl:attribute>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="component.subtitle">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="subtitle"
+ select="($node/docinfo/subtitle
+ |$node/info/subtitle
+ |$node/prefaceinfo/subtitle
+ |$node/chapterinfo/subtitle
+ |$node/appendixinfo/subtitle
+ |$node/articleinfo/subtitle
+ |$node/artheader/subtitle
+ |$node/subtitle)[1]"/>
+
+ <xsl:if test="$subtitle">
+ <h3 class="subtitle">
+ <i>
+ <xsl:apply-templates select="$node" mode="object.subtitle.markup"/>
+ </i>
+ </h3>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="component.separator">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="dedication" mode="dedication">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:call-template name="dedication.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="dedication/title|dedication/info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::dedication[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="dedication/subtitle|dedication/info/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::dedication[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="dedication"></xsl:template> <!-- see mode="dedication" -->
+<xsl:template match="dedication/title"></xsl:template>
+<xsl:template match="dedication/subtitle"></xsl:template>
+<xsl:template match="dedication/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="colophon">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="component.title"/>
+ <xsl:call-template name="component.subtitle"/>
+
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="colophon/title"></xsl:template>
+<xsl:template match="colophon/subtitle"></xsl:template>
+<xsl:template match="colophon/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="preface">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="preface.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="preface/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::preface[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface/subtitle
+ |preface/prefaceinfo/subtitle
+ |preface/info/subtitle
+ |preface/docinfo/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::preface[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface/docinfo|prefaceinfo"></xsl:template>
+<xsl:template match="preface/info"></xsl:template>
+<xsl:template match="preface/title"></xsl:template>
+<xsl:template match="preface/titleabbrev"></xsl:template>
+<xsl:template match="preface/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="chapter">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="chapter.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="chapter/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::chapter[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter/subtitle
+ |chapter/chapterinfo/subtitle
+ |chapter/info/subtitle
+ |chapter/docinfo/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::chapter[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter/docinfo|chapterinfo"></xsl:template>
+<xsl:template match="chapter/info"></xsl:template>
+<xsl:template match="chapter/title"></xsl:template>
+<xsl:template match="chapter/titleabbrev"></xsl:template>
+<xsl:template match="chapter/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="appendix">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="parent::article and $ischunk = 0">
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="level" select="1"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="component.separator"/>
+ <xsl:call-template name="appendix.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="component.toc.separator"/>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+
+ <xsl:if test="not(parent::article) or $ischunk != 0">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="appendix/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::appendix[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="appendix/subtitle
+ |appendix/appendixinfo/subtitle
+ |appendix/info/subtitle
+ |appendix/docinfo/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::appendix[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="appendix/docinfo|appendixinfo"></xsl:template>
+<xsl:template match="appendix/info"></xsl:template>
+<xsl:template match="appendix/title"></xsl:template>
+<xsl:template match="appendix/titleabbrev"></xsl:template>
+<xsl:template match="appendix/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="article">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="article.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="article/title|article/articleinfo/title" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node" select="ancestor::article[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="article/subtitle
+ |article/articleinfo/subtitle
+ |article/info/subtitle
+ |article/artheader/subtitle"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="component.subtitle">
+ <xsl:with-param name="node" select="ancestor::article[1]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="article/artheader|article/articleinfo"></xsl:template>
+<xsl:template match="article/info"></xsl:template>
+<xsl:template match="article/title"></xsl:template>
+<xsl:template match="article/titleabbrev"></xsl:template>
+<xsl:template match="article/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/html/division.xsl b/docs/xsl-generic/html/division.xsl
new file mode 100644
index 00000000..599fe495
--- /dev/null
+++ b/docs/xsl-generic/html/division.xsl
@@ -0,0 +1,228 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: division.xsl 7000 2007-07-10 20:41:35Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="set">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="set.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="set.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="set/setinfo"></xsl:template>
+<xsl:template match="set/title"></xsl:template>
+<xsl:template match="set/titleabbrev"></xsl:template>
+<xsl:template match="set/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="book.titlepage"/>
+
+ <xsl:apply-templates select="dedication" mode="dedication"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="make.lots">
+ <xsl:with-param name="toc.params" select="$toc.params"/>
+ <xsl:with-param name="toc">
+ <xsl:call-template name="division.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="book/bookinfo"></xsl:template>
+<xsl:template match="book/info"></xsl:template>
+<xsl:template match="book/title"></xsl:template>
+<xsl:template match="book/titleabbrev"></xsl:template>
+<xsl:template match="book/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="part">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="part.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
+ <xsl:call-template name="division.toc"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="part" mode="make.part.toc">
+ <xsl:call-template name="division.toc"/>
+</xsl:template>
+
+<xsl:template match="reference" mode="make.part.toc">
+ <xsl:call-template name="division.toc"/>
+</xsl:template>
+
+<xsl:template match="part/docinfo"></xsl:template>
+<xsl:template match="part/partinfo"></xsl:template>
+<xsl:template match="part/info"></xsl:template>
+<xsl:template match="part/title"></xsl:template>
+<xsl:template match="part/titleabbrev"></xsl:template>
+<xsl:template match="part/subtitle"></xsl:template>
+
+<xsl:template match="partintro">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="partintro.titlepage"/>
+ <xsl:apply-templates/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="node" select="parent::*"/>
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="contains($toc.params, 'toc')">
+ <!-- not ancestor::part because partintro appears in reference -->
+ <xsl:apply-templates select="parent::*" mode="make.part.toc"/>
+ </xsl:if>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="partintro/title"></xsl:template>
+<xsl:template match="partintro/titleabbrev"></xsl:template>
+<xsl:template match="partintro/subtitle"></xsl:template>
+
+<xsl:template match="partintro/title" mode="partintro.title.mode">
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="partintro/subtitle" mode="partintro.title.mode">
+ <h3>
+ <i><xsl:apply-templates/></i>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="book" mode="division.number">
+ <xsl:number from="set" count="book" format="1."/>
+</xsl:template>
+
+<xsl:template match="part" mode="division.number">
+ <xsl:number from="book" count="part" format="I."/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="division.title">
+ <xsl:param name="node" select="."/>
+
+ <h1>
+ <xsl:attribute name="class">title</xsl:attribute>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="$node" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </h1>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/html/docbook.xsl b/docs/xsl-generic/html/docbook.xsl
new file mode 100644
index 00000000..ad775c20
--- /dev/null
+++ b/docs/xsl-generic/html/docbook.xsl
@@ -0,0 +1,479 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="db ng exsl"
+ version='1.0'>
+
+<xsl:output method="html"
+ encoding="ISO-8859-1"
+ indent="no"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 7156 2007-07-26 21:42:04Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="html.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="chunker.xsl"/>
+<xsl:include href="html-rtf.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'html'"/>
+<xsl:param name="htmlhelp.output" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+<xsl:key name="gid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <span style="color: red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="text()">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template name="body.attributes">
+ <xsl:attribute name="bgcolor">white</xsl:attribute>
+ <xsl:attribute name="text">black</xsl:attribute>
+ <xsl:attribute name="link">#0000FF</xsl:attribute>
+ <xsl:attribute name="vlink">#840084</xsl:attribute>
+ <xsl:attribute name="alink">#0000FF</xsl:attribute>
+</xsl:template>
+
+<xsl:template name="head.content">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$link.mailto.url != ''">
+ <link rev="made"
+ href="{$link.mailto.url}"/>
+ </xsl:if>
+
+ <xsl:if test="$html.base != ''">
+ <base href="{$html.base}"/>
+ </xsl:if>
+
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+
+ <xsl:if test="$generate.meta.abstract != 0">
+ <xsl:variable name="info" select="(articleinfo
+ |bookinfo
+ |prefaceinfo
+ |chapterinfo
+ |appendixinfo
+ |sectioninfo
+ |sect1info
+ |sect2info
+ |sect3info
+ |sect4info
+ |sect5info
+ |referenceinfo
+ |refentryinfo
+ |partinfo
+ |info
+ |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="($draft.mode = 'yes' or
+ ($draft.mode = 'maybe' and
+ ancestor-or-self::*[@status][1]/@status = 'draft'))
+ and $draft.watermark.image != ''">
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="head.keywords.content"/>
+</xsl:template>
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <link rel="stylesheet" href="{substring-before($stylesheets, ' ')}">
+ <xsl:if test="$html.stylesheet.type != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$html.stylesheet.type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <link rel="stylesheet" href="{$stylesheets}">
+ <xsl:if test="$html.stylesheet.type != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$html.stylesheet.type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="head.keywords.content">
+ <xsl:apply-templates select="chapterinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="appendixinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="prefaceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bookinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="setinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="articleinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="artheader/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect4info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect5info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sectioninfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bibliographyinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="glossaryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="indexinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refentryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="partinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="referenceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="docinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="info/keywordset" mode="html.header"/>
+
+ <xsl:if test="$inherit.keywords != 0
+ and parent::*">
+ <xsl:apply-templates select="parent::*" mode="head.keywords.content"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <xsl:call-template name="add.annotation.links"/>
+ <script type="text/javascript">
+ <xsl:text>&#10;// Create PopupWindow objects</xsl:text>
+ <xsl:for-each select="//annotation">
+ <xsl:text>&#10;var popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text> = new PopupWindow("popup-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>");&#10;</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.offsetY = 15;&#10;</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.autoHide();&#10;</xsl:text>
+ </xsl:for-each>
+ </script>
+
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+ </xsl:if>
+
+ <!-- system.head.content is like user.head.content, except that
+ it is called before head.content. This is important because it
+ means, for example, that <style> elements output by system.head.content
+ have a lower CSS precedence than the users stylesheet. -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="user.preroot">
+ <!-- Pre-root output, can be used to output comments and PIs. -->
+ <!-- This must not output any element content! -->
+</xsl:template>
+
+<xsl:template name="user.head.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="(function-available('exsl:node-set') or
+ contains(system-property('xsl:vendor'),
+ 'Apache Software Foundation'))
+ and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="nons">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <!--
+ <xsl:message>Saving stripped document.</xsl:message>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="'/tmp/stripped.xml'"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="exsl:node-set($nons)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($nons)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)"
+ mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)"
+ mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or
+ $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ <xsl:value-of select="$html.append"/>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+
+ <!-- The default is that we are not chunking... -->
+ <xsl:text>0</xsl:text>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/ebnf.xsl b/docs/xsl-generic/html/ebnf.xsl
new file mode 100644
index 00000000..94a66c55
--- /dev/null
+++ b/docs/xsl-generic/html/ebnf.xsl
@@ -0,0 +1,329 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: ebnf.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns="">
+<referenceinfo>
+<releaseinfo role="meta">
+$Id: ebnf.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+</releaseinfo>
+<author><surname>Walsh</surname>
+<firstname>Norman</firstname></author>
+<copyright><year>1999</year><year>2000</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</referenceinfo>
+<title>HTML EBNF Reference</title>
+
+<partintro>
+<section><title>Introduction</title>
+
+<para>This is technical reference documentation for the DocBook XSL
+Stylesheets; it documents (some of) the parameters, templates, and
+other elements of the stylesheets.</para>
+
+<para>This reference describes the templates and parameters relevant
+to formatting EBNF markup.</para>
+
+<para>This is not intended to be <quote>user</quote> documentation.
+It is provided for developers writing customization layers for the
+stylesheets, and for anyone who's interested in <quote>how it
+works</quote>.</para>
+
+<para>Although I am trying to be thorough, this documentation is known
+to be incomplete. Don't forget to read the source, too :-)</para>
+</section>
+</partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productionset">
+ <table width="100%" cellpadding="5">
+ <xsl:if test="$ebnf.table.bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$ebnf.table.bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$ebnf.table.border != 0">
+ <xsl:attribute name="border">1</xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="summary">
+ <xsl:text>EBNF</xsl:text>
+ <xsl:if test="title">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="title"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:if test="title">
+ <tr>
+ <th align="left" valign="top">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="title"/>
+ </th>
+ </tr>
+ </xsl:if>
+ <tr>
+ <td>
+ <table border="0" width="99%" cellpadding="0">
+ <xsl:if test="$ebnf.table.bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$ebnf.table.bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:attribute name="summary">EBNF productions</xsl:attribute>
+ <xsl:apply-templates select="production|productionrecap"/>
+ </table>
+ </td>
+ </tr>
+ </table>
+</xsl:template>
+
+<xsl:template match="productionset/title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="production">
+ <xsl:param name="recap" select="false()"/>
+ <tr>
+ <td align="left" valign="top" width="3%">
+ <xsl:text>[</xsl:text>
+ <xsl:number count="production" level="any"/>
+ <xsl:text>]</xsl:text>
+ </td>
+ <td align="right" valign="top" width="10%">
+ <xsl:choose>
+ <xsl:when test="$recap">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="lhs"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="lhs"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td valign="top" width="5%" align="center">
+ <xsl:copy-of select="$ebnf.assignment"/>
+ </td>
+ <td valign="top" width="52%">
+ <xsl:apply-templates select="rhs"/>
+ <xsl:copy-of select="$ebnf.statement.terminator"/>
+ </td>
+ <td align="left" valign="top" width="30%">
+ <xsl:choose>
+ <xsl:when test="rhs/lineannotation|constraint">
+ <xsl:apply-templates select="rhs/lineannotation" mode="rhslo"/>
+ <xsl:apply-templates select="constraint"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="productionrecap">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:if test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no ID for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="count($targets)>1">
+ <xsl:message>
+ <xsl:text>Warning: multiple "IDs" for productionrecap linkend: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target">
+ <xsl:with-param name="recap" select="true()"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="lhs">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="rhs">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::rhs">
+ <xsl:text> |</xsl:text>
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="nonterminal">
+ <xsl:variable name="linkend">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="@def"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="element-list">production</xsl:with-param>
+ </xsl:call-template>
+
+ <!-- If you don't provide content, you can't point outside this doc. -->
+ <xsl:choose>
+ <xsl:when test="*|text()"><!--nop--></xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$linkend = ''">
+ <xsl:message>
+ <xsl:text>Non-terminals with no content must point to </xsl:text>
+ <xsl:text>production elements in the current document.</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>Invalid xpointer for empty nt: </xsl:text>
+ <xsl:value-of select="@def"/>
+ </xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@def"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <a href="{$href}">
+ <xsl:choose>
+ <xsl:when test="*|text()">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$linkend != ''">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target/lhs"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="rhs/lineannotation" mode="rhslo">
+ <xsl:text>/*&#160;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#160;*/</xsl:text>
+ <br/>
+</xsl:template>
+
+<xsl:template match="constraint">
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="check.idref.targets">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ <xsl:with-param name="element-list">constraintdef</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:variable name="href">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:text>[&#160;</xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:if test="$target/@role">
+ <xsl:value-of select="$target/@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <a href="{$href}">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:apply-templates select="$target" mode="title.markup"/>
+ </a>
+ <xsl:text>&#160;]</xsl:text>
+ <xsl:if test="following-sibling::constraint">
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="constraintdef">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="constraintdef/title">
+ <p><b><xsl:apply-templates/></b></p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/footnote.xsl b/docs/xsl-generic/html/footnote.xsl
new file mode 100644
index 00000000..ca996380
--- /dev/null
+++ b/docs/xsl-generic/html/footnote.xsl
@@ -0,0 +1,299 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: footnote.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="footnote">
+ <xsl:variable name="name">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::tgroup">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a name="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+ </xsl:when>
+ <xsl:otherwise>
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a name="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="." mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="footnoteref">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="footnote" select="$targets[1]"/>
+
+ <xsl:variable name="target.href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:value-of select="substring-before($target.href, '#')"/>
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:value-of select="substring-after($target.href, '#')"/>
+ </xsl:variable>
+
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="$footnote" mode="footnote.number"/>
+ </a>
+ <xsl:text>]</xsl:text>
+ </sup>
+</xsl:template>
+
+<xsl:template match="footnote" mode="footnote.number">
+ <xsl:choose>
+ <xsl:when test="string-length(@label) != 0">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:when test="ancestor::tgroup">
+ <xsl:variable name="tfnum">
+ <xsl:number level="any" from="table|informaltable" format="1"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($table.footnote.number.symbols) &gt;= $tfnum">
+ <xsl:value-of select="substring($table.footnote.number.symbols, $tfnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="any" from="tgroup"
+ format="{$table.footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="pfoot" select="preceding::footnote[not(@label)]"/>
+ <xsl:variable name="ptfoot" select="preceding::tgroup//footnote"/>
+ <xsl:variable name="fnum" select="count($pfoot) - count($ptfoot) + 1"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($footnote.number.symbols) &gt;= $fnum">
+ <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number value="$fnum" format="{$footnote.number.format}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="footnote/para[1]|footnote/simpara[1]" priority="2">
+ <!-- this only works if the first thing in a footnote is a para, -->
+ <!-- which is ok, because it usually is. -->
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <p>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a name="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ancestor::footnote"
+ mode="footnote.number"/>
+ </a>
+ <xsl:text>] </xsl:text>
+ </sup>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="footnote.body.number">
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="footnote.mark">
+ <sup>
+ <xsl:text>[</xsl:text>
+ <a name="{$name}" href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ancestor::footnote"
+ mode="footnote.number"/>
+ </a>
+ <xsl:text>] </xsl:text>
+ </sup>
+ </xsl:variable>
+
+ <xsl:variable name="html">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')">
+ <xsl:variable name="html-nodes" select="exsl:node-set($html)"/>
+ <xsl:choose>
+ <xsl:when test="$html-nodes//p">
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.p">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.text">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$html"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!--
+<xsl:template name="count-element-from">
+ <xsl:param name="from" select=".."/>
+ <xsl:param name="to" select="."/>
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="list" select="$from/following::*[local-name(.)=local-name($to)]
+ |$from/descendant-or-self::*[local-name(.)=local-name($to)]"/>
+
+ <xsl:choose>
+ <xsl:when test="not($list)">
+ <xsl:text>-1</xsl:text>
+ </xsl:when>
+ <xsl:when test="$list[1] = $to">
+ <xsl:value-of select="$count + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+-->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.footnotes">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="table.footnotes"
+ select=".//tgroup//footnote"/>
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="count($footnotes)>count($table.footnotes)">
+ <div class="footnotes">
+ <br/>
+ <hr width="100" align="left"/>
+ <xsl:apply-templates select="$footnotes" mode="process.footnote.mode"/>
+ </div>
+ </xsl:if>
+
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <div class="annotation-list">
+ <div class="annotation-nocss">
+ <p>The following annotations are from this essay. You are seeing
+ them here because your browser doesn’t support the user-interface
+ techniques used to make them appear as ‘popups’ on modern browsers.</p>
+ </div>
+
+ <xsl:apply-templates select="//annotation"
+ mode="annotation-popup"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.chunk.footnotes">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="footnote" name="process.footnote" mode="process.footnote.mode">
+ <xsl:choose>
+ <xsl:when test="local-name(*[1]) = 'para' or local-name(*[1]) = 'simpara'">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+
+ <xsl:when test="$html.cleanup != 0 and function-available('exsl:node-set')">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="*[1]" mode="footnote.body.number"/>
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Warning: footnote number may not be generated </xsl:text>
+ <xsl:text>correctly; </xsl:text>
+ <xsl:value-of select="local-name(*[1])"/>
+ <xsl:text> unexpected as first child of footnote.</xsl:text>
+ </xsl:message>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tgroup//footnote"
+ mode="process.footnote.mode">
+</xsl:template>
+
+<xsl:template match="footnote" mode="table.footnote.mode">
+ <xsl:call-template name="process.footnote"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/formal.xsl b/docs/xsl-generic/html/formal.xsl
new file mode 100644
index 00000000..b264fef9
--- /dev/null
+++ b/docs/xsl-generic/html/formal.xsl
@@ -0,0 +1,400 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: formal.xsl 7249 2007-08-18 09:34:34Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="formal.object.break.after">1</xsl:param>
+
+<xsl:template name="formal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class">
+ <xsl:apply-templates select="." mode="class.value"/>
+ </xsl:param>
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:variable name="content">
+ <div class="{$class}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ <div class="{$class}-contents">
+ <xsl:apply-templates/>
+ </div>
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ <div class="{$class}-contents"><xsl:apply-templates/></div>
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ <xsl:if test="not($formal.object.break.after = '0')">
+ <br class="{$class}-break"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="class"><xsl:value-of
+ select="$class"/>-float</xsl:with-param>
+ <xsl:with-param name="floatstyle" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="formal.object.heading">
+ <xsl:param name="object" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$object" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:param>
+
+ <p class="title">
+ <b>
+ <xsl:copy-of select="$title"/>
+ </b>
+ </p>
+</xsl:template>
+
+<xsl:template name="informal.object">
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:variable name="content">
+ <div class="{$class}">
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+
+ <!-- HACK: This doesn't belong inside formal.object; it
+ should be done by the table template, but I want
+ the link to be inside the DIV, so... -->
+ <xsl:if test="local-name(.) = 'informaltable'">
+ <xsl:call-template name="table.longdesc"/>
+ </xsl:if>
+
+ <xsl:if test="$spacing.paras != 0"><p/></xsl:if>
+ </div>
+ </xsl:variable>
+
+ <xsl:variable name="floatstyle">
+ <xsl:call-template name="floatstyle"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$floatstyle != ''">
+ <xsl:call-template name="floater">
+ <xsl:with-param name="class"><xsl:value-of
+ select="$class"/>-float</xsl:with-param>
+ <xsl:with-param name="floatstyle" select="$floatstyle"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="semiformal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="informal.object">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="figure">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="table">
+ <xsl:choose>
+ <xsl:when test="tgroup|mediaobject|graphic">
+ <xsl:call-template name="calsTable"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:copy-of select="@*[not(local-name()='id')]"/>
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calsTable">
+ <xsl:if test="tgroup/tbody/tr
+ |tgroup/thead/tr
+ |tgroup/tfoot/tr">
+ <xsl:message terminate="yes">Broken table: tr descendent of CALS Table.</xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ <xsl:with-param name="class">
+ <xsl:choose>
+ <xsl:when test="@tabstyle">
+ <!-- hack, this will only ever occur on table, not example -->
+ <xsl:value-of select="@tabstyle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="htmlTable">
+ <xsl:if test="tgroup/tbody/row
+ |tgroup/thead/row
+ |tgroup/tfoot/row">
+ <xsl:message terminate="yes">Broken table: row descendent of HTML table.</xsl:message>
+ </xsl:if>
+
+ <xsl:apply-templates mode="htmlTable"/>
+</xsl:template>
+
+<xsl:template match="example">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="equation">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="figure/title"></xsl:template>
+<xsl:template match="figure/titleabbrev"></xsl:template>
+<xsl:template match="table/title"></xsl:template>
+<xsl:template match="table/titleabbrev"></xsl:template>
+<xsl:template match="table/textobject"></xsl:template>
+<xsl:template match="example/title"></xsl:template>
+<xsl:template match="example/titleabbrev"></xsl:template>
+<xsl:template match="equation/title"></xsl:template>
+<xsl:template match="equation/titleabbrev"></xsl:template>
+
+<xsl:template match="informalfigure">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informalexample">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="informaltable">
+ <xsl:choose>
+ <xsl:when test="tgroup|mediaobject|graphic">
+ <xsl:call-template name="informal.object">
+ <xsl:with-param name="class">
+ <xsl:choose>
+ <xsl:when test="@tabstyle">
+ <xsl:value-of select="@tabstyle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <table>
+ <xsl:copy-of select="@*"/>
+ <xsl:call-template name="htmlTable"/>
+ </table>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="informaltable/textobject"></xsl:template>
+
+<xsl:template name="table.longdesc">
+ <!-- HACK: This doesn't belong inside formal.objectt; it should be done by -->
+ <!-- the table template, but I want the link to be inside the DIV, so... -->
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="irrelevant">
+ <!-- write.longdesc returns the filename ... -->
+ <xsl:call-template name="write.longdesc">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$html.longdesc != 0 and $html.longdesc.link != 0
+ and textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.link">
+ <xsl:with-param name="longdesc.uri" select="$longdesc.uri"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="informalequation">
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template name="floatstyle">
+ <xsl:if test="(@float and @float != '0') or @floatstyle != ''">
+ <xsl:choose>
+ <xsl:when test="@floatstyle != ''">
+ <xsl:value-of select="@floatstyle"/>
+ </xsl:when>
+ <xsl:when test="@float = '1'">
+ <xsl:value-of select="$default.float.class"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@float"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="floater">
+ <xsl:param name="content"/>
+ <xsl:param name="class" select="'float'"/>
+ <xsl:param name="floatstyle" select="'left'"/>
+
+ <div class="{$class}">
+ <xsl:if test="$floatstyle = 'left' or $floatstyle = 'right'">
+ <xsl:attribute name="style">
+ <xsl:text>float: </xsl:text>
+ <xsl:value-of select="$floatstyle"/>
+ <xsl:text>;</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/glossary.xsl b/docs/xsl-generic/html/glossary.xsl
new file mode 100644
index 00000000..92178067
--- /dev/null
+++ b/docs/xsl-generic/html/glossary.xsl
@@ -0,0 +1,482 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: glossary.xsl 7246 2007-08-16 20:58:06Z bobstayton $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glossary">
+ &setup-language-variable;
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="glossary.titlepage"/>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv">
+ <xsl:apply-templates select="(glossdiv[1]/preceding-sibling::*)"/>
+ </xsl:when>
+ <xsl:when test="glossentry">
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv">
+ <xsl:apply-templates select="glossdiv"/>
+ </xsl:when>
+ <xsl:when test="glossentry">
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}"
+ select="translate(glossterm, $lowercase,
+ $uppercase)"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- empty glossary -->
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="glossary/glossaryinfo"></xsl:template>
+<xsl:template match="glossary/info"></xsl:template>
+<xsl:template match="glossary/title"></xsl:template>
+<xsl:template match="glossary/subtitle"></xsl:template>
+<xsl:template match="glossary/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glosslist">
+ &setup-language-variable;
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="blockinfo/title|info/title|title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}"
+ select="translate(glossterm, $lowercase,
+ $uppercase)"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="glossdiv">
+ &setup-language-variable;
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:apply-templates select="glossentry">
+ <xsl:sort lang="{$language}"
+ select="translate(glossterm, $lowercase,
+ $uppercase)"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossentry"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="glossdiv/title">
+ <h3>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!--
+GlossEntry ::=
+ GlossTerm, Acronym?, Abbrev?,
+ (IndexTerm)*,
+ RevHistory?,
+ (GlossSee | GlossDef+)
+-->
+
+<xsl:template match="glossentry">
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="acronym|abbrev"/>
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="glossterm"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dt>
+ </xsl:when>
+ <xsl:when test="$glossentry.show.acronym = 'yes'">
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="glossterm"/>
+
+ <xsl:if test="acronym|abbrev">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="acronym|abbrev"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </dt>
+ </xsl:when>
+ <xsl:otherwise>
+ <dt>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="$glossterm.auto.link != 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="glossterm"/>
+ </dt>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="indexterm|revhistory|glosssee|glossdef"/>
+</xsl:template>
+
+<xsl:template match="glossentry/glossterm">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::glossterm">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/acronym">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/abbrev">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
+</xsl:template>
+
+<xsl:template match="glossentry/revhistory">
+</xsl:template>
+
+<xsl:template match="glossentry/glosssee">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <dd>
+ <p>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'see'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ <xsl:text>.</xsl:text>
+ </p>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossentry/glossdef">
+ <dd>
+ <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
+ <xsl:if test="glossseealso">
+ <p>
+ <xsl:variable name="template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'glossary'"/>
+ <xsl:with-param name="name" select="'seealso'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="title">
+ <xsl:apply-templates select="glossseealso"/>
+ </xsl:variable>
+ <xsl:call-template name="substitute-markup">
+ <xsl:with-param name="template" select="$template"/>
+ <xsl:with-param name="title" select="$title"/>
+ </xsl:call-template>
+ </p>
+ </xsl:if>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossseealso">
+ <xsl:variable name="otherterm" select="@otherterm"/>
+ <xsl:variable name="targets" select="key('id', $otherterm)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="$otherterm != '' and not($target)">
+ <xsl:message>
+ <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
+ <xsl:value-of select="$otherterm"/>
+ </xsl:message>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="position() = last()">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- Glossary collection -->
+
+<xsl:template match="glossary[@role='auto']" priority="2">
+ &setup-language-variable;
+ <xsl:variable name="terms"
+ select="//glossterm[not(parent::glossdef)]|//firstterm"/>
+ <xsl:variable name="collection" select="document($glossary.collection, .)"/>
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="$glossary.collection = ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary </xsl:text>
+ <xsl:text>without a glossary.collection file.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not($collection) and $glossary.collection != ''">
+ <xsl:message>
+ <xsl:text>Warning: processing automatic glossary but unable to </xsl:text>
+ <xsl:text>open glossary.collection file '</xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="glossary.titlepage"/>
+
+ <xsl:choose>
+ <xsl:when test="glossdiv and $collection//glossdiv">
+ <xsl:for-each select="$collection//glossdiv">
+ <!-- first see if there are any in this div -->
+ <xsl:variable name="exist.test">
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:value-of select="glossterm"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="$exist.test != ''">
+ <xsl:apply-templates select="." mode="auto-glossary">
+ <xsl:with-param name="terms" select="$terms"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:sort lang="{$language}"
+ select="translate(glossterm, $lowercase,
+ $uppercase)"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$collection//glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="auto-glossary">
+ <!-- pop back out to the default mode for most elements -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="glossdiv" mode="auto-glossary">
+ <xsl:param name="terms" select="."/>
+
+ &setup-language-variable;
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+
+ <dl>
+ <xsl:choose>
+ <xsl:when test="$glossary.sort != 0">
+ <xsl:for-each select="glossentry">
+ <xsl:sort lang="{$language}"
+ select="translate(glossterm, $lowercase,
+ $uppercase)"/>
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="glossentry">
+ <xsl:variable name="cterm" select="glossterm"/>
+ <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
+ <xsl:apply-templates select="." mode="auto-glossary"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dl>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/graphics.xsl b/docs/xsl-generic/html/graphics.xsl
new file mode 100644
index 00000000..3a03edb6
--- /dev/null
+++ b/docs/xsl-generic/html/graphics.xsl
@@ -0,0 +1,1489 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory"
+ xmlns:simg="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.ImageIntrinsics"
+ xmlns:ximg="xalan://com.nwalsh.xalan.ImageIntrinsics"
+ xmlns:xtext="xalan://com.nwalsh.xalan.Text"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ exclude-result-prefixes="xlink stext xtext lxslt simg ximg"
+ extension-element-prefixes="stext xtext"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: graphics.xsl 7241 2007-08-14 15:59:17Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ Contributors:
+ Colin Paul Adams, <colin@colina.demon.co.uk>
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xtext" elements="insertfile"/>
+<lxslt:component prefix="ximg" functions="new getWidth getDepth"/>
+
+<!-- ==================================================================== -->
+<!-- Graphic format tests for the HTML backend -->
+
+<xsl:template name="is.graphic.format">
+ <xsl:param name="format"></xsl:param>
+ <xsl:if test="$format = 'SVG'
+ or $format = 'PNG'
+ or $format = 'JPG'
+ or $format = 'JPEG'
+ or $format = 'linespecific'
+ or $format = 'GIF'
+ or $format = 'GIF87a'
+ or $format = 'GIF89a'
+ or $format = 'BMP'">1</xsl:if>
+</xsl:template>
+
+<xsl:template name="is.graphic.extension">
+ <xsl:param name="ext"></xsl:param>
+ <xsl:variable name="lcext" select="translate($ext,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ 'abcdefghijklmnopqrstuvwxyz')"/>
+ <xsl:if test="$lcext = 'svg'
+ or $lcext = 'png'
+ or $lcext = 'jpeg'
+ or $lcext = 'jpg'
+ or $lcext = 'avi'
+ or $lcext = 'mpg'
+ or $lcext = 'mpeg'
+ or $lcext = 'qt'
+ or $lcext = 'gif'
+ or $lcext = 'bmp'">1</xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="screenshot">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="screeninfo">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.image">
+ <!-- When this template is called, the current node should be -->
+ <!-- a graphic, inlinegraphic, imagedata, or videodata. All -->
+ <!-- those elements have the same set of attributes, so we can -->
+ <!-- handle them all in one place. -->
+ <xsl:param name="tag" select="'img'"/>
+ <xsl:param name="alt"/>
+ <xsl:param name="longdesc"/>
+
+ <!-- The HTML img element only supports the notion of content-area
+ scaling; it doesn't support the distinction between a
+ content-area and a viewport-area, so we have to make some
+ compromises.
+
+ 1. If only the content-area is specified, everything is fine.
+ (If you ask for a three inch image, that's what you'll get.)
+
+ 2. If only the viewport-area is provided:
+ - If scalefit=1, treat it as both the content-area and
+ the viewport-area. (If you ask for an image in a five inch
+ area, we'll make the image five inches to fill that area.)
+ - If scalefit=0, ignore the viewport-area specification.
+
+ Note: this is not quite the right semantic and has the additional
+ problem that it can result in anamorphic scaling, which scalefit
+ should never cause.
+
+ 3. If both the content-area and the viewport-area is specified
+ on a graphic element, ignore the viewport-area.
+ (If you ask for a three inch image in a five inch area, we'll assume
+ it's better to give you a three inch image in an unspecified area
+ than a five inch image in a five inch area.
+
+ Relative units also cause problems. As a general rule, the stylesheets
+ are operating too early and too loosely coupled with the rendering engine
+ to know things like the current font size or the actual dimensions of
+ an image. Therefore:
+
+ 1. We use a fixed size for pixels, $pixels.per.inch
+
+ 2. We use a fixed size for "em"s, $points.per.em
+
+ Percentages are problematic. In the following discussion, we speak
+ of width and contentwidth, but the same issues apply to depth and
+ contentdepth
+
+ 1. A width of 50% means "half of the available space for the image."
+ That's fine. But note that in HTML, this is a dynamic property and
+ the image size will vary if the browser window is resized.
+
+ 2. A contentwidth of 50% means "half of the actual image width". But
+ the stylesheets have no way to assess the image's actual size. Treating
+ this as a width of 50% is one possibility, but it produces behavior
+ (dynamic scaling) that seems entirely out of character with the
+ meaning.
+
+ Instead, the stylesheets define a $nominal.image.width
+ and convert percentages to actual values based on that nominal size.
+
+ Scale can be problematic. Scale applies to the contentwidth, so
+ a scale of 50 when a contentwidth is not specified is analagous to a
+ width of 50%. (If a contentwidth is specified, the scaling factor can
+ be applied to that value and no problem exists.)
+
+ If scale is specified but contentwidth is not supplied, the
+ nominal.image.width is used to calculate a base size
+ for scaling.
+
+ Warning: as a consequence of these decisions, unless the aspect ratio
+ of your image happens to be exactly the same as (nominal width / nominal height),
+ specifying contentwidth="50%" and contentdepth="50%" is NOT going to
+ scale the way you expect (or really, the way it should).
+
+ Don't do that. In fact, a percentage value is not recommended for content
+ size at all. Use scale instead.
+
+ Finally, align and valign are troublesome. Horizontal alignment is now
+ supported by wrapping the image in a <div align="{@align}"> (in block
+ contexts!). I can't think of anything (practical) to do about vertical
+ alignment.
+ -->
+
+ <xsl:variable name="width-units">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="@width">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@width"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(@depth) and $default.image.width != ''">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="$default.image.width"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="@width">
+ <xsl:choose>
+ <xsl:when test="$width-units = '%'">
+ <xsl:value-of select="@width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@width"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="not(@depth) and $default.image.width != ''">
+ <xsl:value-of select="$default.image.width"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scalefit">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">0</xsl:when>
+ <xsl:when test="@scale">0</xsl:when>
+ <xsl:when test="@scalefit"><xsl:value-of select="@scalefit"/></xsl:when>
+ <xsl:when test="$width != '' or @depth">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scale">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">1.0</xsl:when>
+ <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when>
+ <xsl:when test="@scale">
+ <xsl:value-of select="@scale div 100.0"/>
+ </xsl:when>
+ <xsl:otherwise>1.0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'graphic'
+ or local-name(.) = 'inlinegraphic'">
+ <!-- handle legacy graphic and inlinegraphic by new template -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- imagedata, videodata, audiodata -->
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="output_filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+ <!--
+ Moved test for $keep.relative.image.uris to template below:
+ <xsl:template match="@fileref">
+ -->
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="img.src.path.pi">
+ <xsl:call-template name="pi.dbhtml_img.src.path">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename.for.graphicsize">
+ <xsl:choose>
+ <xsl:when test="$img.src.path.pi != ''">
+ <xsl:value-of select="concat($img.src.path.pi, $filename)"/>
+ </xsl:when>
+ <xsl:when test="$img.src.path != '' and
+ $graphicsize.use.img.src.path != 0 and
+ $tag = 'img' and
+ not(starts-with($filename, '/')) and
+ not(contains($filename, '://'))">
+ <xsl:value-of select="concat($img.src.path, $filename)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="realintrinsicwidth">
+ <!-- This funny compound test works around a bug in XSLTC -->
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $graphicsize.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('simg:getWidth')">
+ <xsl:value-of select="simg:getWidth(simg:new($filename.for.graphicsize),
+ $nominal.image.width)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ximg:getWidth')">
+ <xsl:value-of select="ximg:getWidth(ximg:new($filename.for.graphicsize),
+ $nominal.image.width)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="intrinsicwidth">
+ <xsl:choose>
+ <xsl:when test="$realintrinsicwidth = 0">
+ <xsl:value-of select="$nominal.image.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$realintrinsicwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="intrinsicdepth">
+ <!-- This funny compound test works around a bug in XSLTC -->
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $graphicsize.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('simg:getDepth')">
+ <xsl:value-of select="simg:getDepth(simg:new($filename.for.graphicsize),
+ $nominal.image.depth)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ximg:getDepth')">
+ <xsl:value-of select="ximg:getDepth(ximg:new($filename.for.graphicsize),
+ $nominal.image.depth)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nominal.image.depth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nominal.image.depth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="contentwidth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="@contentwidth">
+ <xsl:variable name="units">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = '%'">
+ <xsl:variable name="cmagnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$intrinsicwidth * $cmagnitude div 100.0"/>
+ <xsl:text>px</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentwidth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$intrinsicwidth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scaled.contentwidth">
+ <xsl:if test="$contentwidth != ''">
+ <xsl:variable name="cwidth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$contentwidth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$cwidth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="html.width">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="$width-units = '%'">
+ <xsl:value-of select="$width"/>
+ </xsl:when>
+ <xsl:when test="$width != ''">
+ <xsl:variable name="width.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$width"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="round($width.in.points div 72.0 * $pixels.per.inch)"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="contentdepth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="@contentdepth">
+ <xsl:variable name="units">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = '%'">
+ <xsl:variable name="cmagnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$intrinsicdepth * $cmagnitude div 100.0"/>
+ <xsl:text>px</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@contentdepth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$intrinsicdepth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="scaled.contentdepth">
+ <xsl:if test="$contentdepth != ''">
+ <xsl:variable name="cdepth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$contentdepth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$cdepth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="depth-units">
+ <xsl:if test="@depth">
+ <xsl:call-template name="length-units">
+ <xsl:with-param name="length" select="@depth"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:if test="@depth">
+ <xsl:choose>
+ <xsl:when test="$depth-units = '%'">
+ <xsl:value-of select="@depth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="length-spec">
+ <xsl:with-param name="length" select="@depth"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="html.depth">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0"></xsl:when>
+ <xsl:when test="$depth-units = '%'">
+ <xsl:value-of select="$depth"/>
+ </xsl:when>
+ <xsl:when test="@depth and @depth != ''">
+ <xsl:variable name="depth.in.points">
+ <xsl:call-template name="length-in-points">
+ <xsl:with-param name="length" select="$depth"/>
+ <xsl:with-param name="pixels.per.inch" select="$pixels.per.inch"/>
+ <xsl:with-param name="em.size" select="$points.per.em"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="round($depth.in.points div 72.0 * $pixels.per.inch)"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="viewport">
+ <xsl:choose>
+ <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
+ <xsl:when test="local-name(.) = 'inlinegraphic'
+ or ancestor::inlinemediaobject
+ or ancestor::inlineequation">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$make.graphic.viewport"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>=====================================
+scale: <xsl:value-of select="$scale"/>, <xsl:value-of select="$scalefit"/>
+@contentwidth <xsl:value-of select="@contentwidth"/>
+$contentwidth <xsl:value-of select="$contentwidth"/>
+scaled.contentwidth: <xsl:value-of select="$scaled.contentwidth"/>
+@width: <xsl:value-of select="@width"/>
+width: <xsl:value-of select="$width"/>
+html.width: <xsl:value-of select="$html.width"/>
+@contentdepth <xsl:value-of select="@contentdepth"/>
+$contentdepth <xsl:value-of select="$contentdepth"/>
+scaled.contentdepth: <xsl:value-of select="$scaled.contentdepth"/>
+@depth: <xsl:value-of select="@depth"/>
+depth: <xsl:value-of select="$depth"/>
+html.depth: <xsl:value-of select="$html.depth"/>
+align: <xsl:value-of select="@align"/>
+valign: <xsl:value-of select="@valign"/></xsl:message>
+-->
+
+ <xsl:variable name="scaled"
+ select="@width|@depth|@contentwidth|@contentdepth
+ |@scale|@scalefit"/>
+
+ <xsl:variable name="img">
+ <xsl:choose>
+ <xsl:when test="@format = 'SVG'">
+ <object data="{$output_filename}" type="image/svg+xml">
+ <xsl:call-template name="process.image.attributes">
+ <!--xsl:with-param name="alt" select="$alt"/ there's no alt here-->
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$use.embed.for.svg != 0">
+ <embed src="{$output_filename}" type="image/svg+xml">
+ <xsl:call-template name="process.image.attributes">
+ <!--xsl:with-param name="alt" select="$alt"/ there's no alt here -->
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ </embed>
+ </xsl:if>
+ </object>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$tag}">
+ <xsl:if test="$tag = 'img' and ../../self::imageobjectco">
+ <xsl:variable name="mapname">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../../areaspec"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$scaled">
+ <!-- It might be possible to handle some scaling; needs -->
+ <!-- more investigation -->
+ <xsl:message>
+ <xsl:text>Warning: imagemaps not supported </xsl:text>
+ <xsl:text>on scaled images</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="usemap">
+ <xsl:value-of select="concat('#', $mapname)"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:attribute name="src">
+ <xsl:choose>
+ <xsl:when test="$img.src.path != '' and
+ $tag = 'img' and
+ not(starts-with($output_filename, '/')) and
+ not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:attribute>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="process.image.attributes">
+ <xsl:with-param name="alt">
+ <xsl:choose>
+ <xsl:when test="$alt != ''">
+ <xsl:copy-of select="$alt"/>
+ </xsl:when>
+ <xsl:when test="ancestor::figure">
+ <xsl:value-of select="normalize-space(ancestor::figure/title)"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="html.depth" select="$html.depth"/>
+ <xsl:with-param name="html.width" select="$html.width"/>
+ <xsl:with-param name="longdesc" select="$longdesc"/>
+ <xsl:with-param name="scale" select="$scale"/>
+ <xsl:with-param name="scalefit" select="$scalefit"/>
+ <xsl:with-param name="scaled.contentdepth" select="$scaled.contentdepth"/>
+ <xsl:with-param name="scaled.contentwidth" select="$scaled.contentwidth"/>
+ <xsl:with-param name="viewport" select="$viewport"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:call-template name="pi.dbhtml_background-color">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="use.viewport"
+ select="$viewport != 0
+ and ($html.width != ''
+ or ($html.depth != '' and $depth-units != '%')
+ or $bgcolor != ''
+ or @valign)"/>
+
+ <xsl:choose>
+ <xsl:when test="$use.viewport">
+ <table border="0" summary="manufactured viewport for HTML img"
+ cellspacing="0" cellpadding="0">
+ <xsl:if test="$html.width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <tr>
+ <xsl:if test="$html.depth != '' and $depth-units != '%'">
+ <!-- don't do this for percentages because browsers get confused -->
+ <xsl:choose>
+ <xsl:when test="$css.decoration != 0">
+ <xsl:attribute name="style">
+ <xsl:text>height: </xsl:text>
+ <xsl:value-of select="$html.depth"/>
+ <xsl:text>px</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <td>
+ <xsl:if test="$bgcolor != ''">
+ <xsl:choose>
+ <xsl:when test="$css.decoration != 0">
+ <xsl:attribute name="style">
+ <xsl:text>background-color: </xsl:text>
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$img"/>
+ </td>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$img"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$tag = 'img' and ../../self::imageobjectco and not($scaled)">
+ <xsl:variable name="mapname">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../../areaspec"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <map name="{$mapname}">
+ <xsl:for-each select="../../areaspec//area">
+ <xsl:variable name="units">
+ <xsl:choose>
+ <xsl:when test="@units = 'other' and @otherunits">
+ <xsl:value-of select="@otherunits"/>
+ </xsl:when>
+ <xsl:when test="@units">
+ <xsl:value-of select="@units"/>
+ </xsl:when>
+ <!-- areaspec|areaset/area -->
+ <xsl:when test="../@units = 'other' and ../@otherunits">
+ <xsl:value-of select="../@otherunits"/>
+ </xsl:when>
+ <xsl:when test="../@units">
+ <xsl:value-of select="../@units"/>
+ </xsl:when>
+ <!-- areaspec/areaset/area -->
+ <xsl:when test="../../@units = 'other' and ../../@otherunits">
+ <xsl:value-of select="../@otherunits"/>
+ </xsl:when>
+ <xsl:when test="../../@units">
+ <xsl:value-of select="../../@units"/>
+ </xsl:when>
+ <xsl:otherwise>calspair</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = 'calspair' or
+ $units = 'imagemap'">
+ <xsl:variable name="coords" select="normalize-space(@coords)"/>
+
+ <area shape="rect">
+ <xsl:variable name="linkends">
+ <xsl:choose>
+ <xsl:when test="@linkends">
+ <xsl:value-of select="normalize-space(@linkends)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(../@linkends)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="@xlink:href">
+ <xsl:value-of select="@xlink:href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="../@xlink:href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$linkends != ''">
+ <xsl:variable name="linkend">
+ <xsl:choose>
+ <xsl:when test="contains($linkends, ' ')">
+ <xsl:value-of select="substring-before($linkends, ' ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$linkends"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="target" select="key('id', $linkend)[1]"/>
+
+ <xsl:if test="$target">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$href != ''">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$href"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="alt">
+ <xsl:attribute name="alt">
+ <xsl:value-of select="alt[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="coords">
+ <xsl:choose>
+ <xsl:when test="$units = 'calspair'">
+
+ <xsl:variable name="p1"
+ select="substring-before($coords, ' ')"/>
+ <xsl:variable name="p2"
+ select="substring-after($coords, ' ')"/>
+
+ <xsl:variable name="x1" select="substring-before($p1,',')"/>
+ <xsl:variable name="y1" select="substring-after($p1,',')"/>
+ <xsl:variable name="x2" select="substring-before($p2,',')"/>
+ <xsl:variable name="y2" select="substring-after($p2,',')"/>
+
+ <xsl:variable name="x1p" select="$x1 div 100.0"/>
+ <xsl:variable name="y1p" select="$y1 div 100.0"/>
+ <xsl:variable name="x2p" select="$x2 div 100.0"/>
+ <xsl:variable name="y2p" select="$y2 div 100.0"/>
+
+ <!--
+ <xsl:message>
+ <xsl:text>units: </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$x1p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$y1p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$x2p"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$y2p"/><xsl:text>, </xsl:text>
+ </xsl:message>
+
+ <xsl:message>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$intrinsicwidth"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$intrinsicdepth"/>
+ </xsl:message>
+
+ <xsl:message>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of
+ select="round($x1p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y2p * $intrinsicdepth div 100.0))"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($x2p *
+ $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y1p * $intrinsicdepth div 100.0))"/>
+ </xsl:message>
+ -->
+ <xsl:value-of
+ select="round($x1p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y2p * $intrinsicdepth div 100.0))"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of
+ select="round($x2p * $intrinsicwidth div 100.0)"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="round($intrinsicdepth
+ - ($y1p * $intrinsicdepth div 100.0))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$coords"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </area>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Warning: only calspair or </xsl:text>
+ <xsl:text>otherunits='imagemap' supported </xsl:text>
+ <xsl:text>in imageobjectco</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </map>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.image.attributes">
+ <xsl:param name="alt"/>
+ <xsl:param name="html.width"/>
+ <xsl:param name="html.depth"/>
+ <xsl:param name="longdesc"/>
+ <xsl:param name="scale"/>
+ <xsl:param name="scalefit"/>
+ <xsl:param name="scaled.contentdepth"/>
+ <xsl:param name="scaled.contentwidth"/>
+ <xsl:param name="viewport"/>
+
+ <xsl:choose>
+ <xsl:when test="@contentwidth or @contentdepth">
+ <!-- ignore @width/@depth, @scale, and @scalefit if specified -->
+ <xsl:if test="@contentwidth and $scaled.contentwidth != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@contentdepth and $scaled.contentdepth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$scaled.contentdepth"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="number($scale) != 1.0">
+ <!-- scaling is always uniform, so we only have to specify one dimension -->
+ <!-- ignore @scalefit if specified -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scaled.contentwidth"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scalefit != 0">
+ <xsl:choose>
+ <xsl:when test="contains($html.width, '%')">
+ <xsl:choose>
+ <xsl:when test="$viewport != 0">
+ <!-- The *viewport* will be scaled, so use 100% here! -->
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="contains($html.depth, '%')">
+ <!-- HTML doesn't deal with this case very well...do nothing -->
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != ''
+ and $scaled.contentdepth != '' and $html.depth != ''">
+ <!-- scalefit should not be anamorphic; figure out which direction -->
+ <!-- has the limiting scale factor and scale in that direction -->
+ <xsl:choose>
+ <xsl:when test="$html.width div $scaled.contentwidth &gt;
+ $html.depth div $scaled.contentdepth">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentwidth != '' and $html.width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$html.width"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="$scaled.contentdepth != '' and $html.depth != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$html.depth"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$alt != ''">
+ <xsl:attribute name="alt">
+ <xsl:value-of select="normalize-space($alt)"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$longdesc != ''">
+ <xsl:attribute name="longdesc">
+ <xsl:value-of select="$longdesc"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@align and $viewport = 0">
+ <xsl:attribute name="align">
+ <xsl:choose>
+ <xsl:when test="@align = 'center'">middle</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@align"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="graphic">
+ <xsl:choose>
+ <xsl:when test="parent::inlineequation">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="process.image"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="process.image"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="inlinegraphic">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <a xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"
+ href="{$filename}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process.image"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="mediaobject|mediaobjectco">
+
+ <xsl:variable name="olist" select="imageobject|imageobjectco
+ |videoobject|audioobject
+ |textobject"/>
+
+ <xsl:variable name="object.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="object" select="$olist[position() = $object.index]"/>
+
+ <xsl:variable name="align">
+ <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$align != '' ">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:apply-templates select="$object"/>
+ <xsl:apply-templates select="caption"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="inlinemediaobject">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="select.mediaobject"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="programlisting/inlinemediaobject
+ |screen/inlinemediaobject" priority="2">
+ <!-- the additional span causes problems in some cases -->
+ <xsl:call-template name="select.mediaobject"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="imageobjectco">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="imageobject"/>
+ <xsl:apply-templates select="calloutlist"/>
+</xsl:template>
+
+<xsl:template match="imageobject">
+ <xsl:apply-templates select="imagedata"/>
+</xsl:template>
+
+<xsl:template match="imagedata">
+ <xsl:variable name="filename">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- Handle MathML and SVG markup in imagedata -->
+ <xsl:when test="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML">
+ <xsl:apply-templates/>
+ </xsl:when>
+
+ <xsl:when test="svg:*" xmlns:svg="http://www.w3.org/2000/svg">
+ <xsl:apply-templates/>
+ </xsl:when>
+
+ <xsl:when test="@format='linespecific'">
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <a xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"
+ href="{$filename}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject"
+ select="ancestor::imageobject/parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="phrases"
+ select="ancestor::mediaobject/textobject[phrase]
+ |ancestor::inlinemediaobject/textobject[phrase]
+ |ancestor::mediaobjectco/textobject[phrase]"/>
+
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ </xsl:with-param>
+ <xsl:with-param name="longdesc">
+ <xsl:call-template name="write.longdesc">
+ <xsl:with-param name="mediaobject"
+ select="ancestor::imageobject/parent::*"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$html.longdesc != 0 and $html.longdesc.link != 0
+ and ancestor::imageobject/parent::*/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.link">
+ <xsl:with-param name="longdesc.uri" select="$longdesc.uri"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="longdesc.uri">
+ <xsl:param name="mediaobject" select="."/>
+ <xsl:if test="$html.longdesc">
+ <xsl:if test="$mediaobject/textobject[not(phrase)]">
+ <xsl:variable name="dbhtml.dir">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:variable>
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:choose>
+ <xsl:when test="$dbhtml.dir != ''">
+ <xsl:value-of select="$dbhtml.dir"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:choose>
+ <xsl:when test="
+ $mediaobject/@*[local-name() = 'id']
+ and not($use.id.as.filename = 0)">
+ <!-- * if this mediaobject has an ID, then we use the -->
+ <!-- * value of that ID as basename for the "longdesc" -->
+ <!-- * file (that is, without prepending an "ld-" too it) -->
+ <xsl:value-of select="$mediaobject/@*[local-name() = 'id']"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this mediaobject does not have an -->
+ <!-- * ID, then we generate an ID... -->
+ <xsl:variable name="image-id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$mediaobject"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ld-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ld-',$image-id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="$filename"/>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="write.longdesc">
+ <xsl:param name="mediaobject" select="."/>
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:variable name="filename">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="$filename"/>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="title" select="'Long Description'"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:for-each select="$mediaobject/textobject[not(phrase)]">
+ <xsl:apply-templates select="./*"/>
+ </xsl:for-each>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="longdesc.link">
+ <xsl:param name="longdesc.uri" select="''"/>
+
+ <xsl:variable name="this.uri">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name">
+ <xsl:call-template name="href.target.uri"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.to">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$longdesc.uri"/>
+ <xsl:with-param name="uriB" select="$this.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div class="longdesc-link" align="right">
+ <br clear="all"/>
+ <span class="longdesc-link">
+ <xsl:text>[</xsl:text>
+ <a href="{$href.to}" target="longdesc">D</a>
+ <xsl:text>]</xsl:text>
+ </span>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="videoobject">
+ <xsl:apply-templates select="videodata"/>
+</xsl:template>
+
+<xsl:template match="videodata">
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="tag" select="'embed'"/>
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="audioobject">
+ <xsl:apply-templates select="audiodata"/>
+</xsl:template>
+
+<xsl:template match="audiodata">
+ <xsl:call-template name="process.image">
+ <xsl:with-param name="tag" select="'embed'"/>
+ <xsl:with-param name="alt">
+ <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="textobject">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="textdata">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="encoding">
+ <xsl:choose>
+ <xsl:when test="@encoding">
+ <xsl:value-of select="@encoding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$textdata.default.encoding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != '0'
+ and $textinsert.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="element-available('stext:insertfile')">
+ <stext:insertfile href="{$filename}" encoding="{$encoding}"/>
+ </xsl:when>
+ <xsl:when test="element-available('xtext:insertfile')">
+ <xtext:insertfile href="{$filename}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No insertfile extension available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <a xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"
+ href="{$filename}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="caption">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="@align = 'right' or @align = 'left' or @align='center'">
+ <xsl:attribute name="align"><xsl:value-of
+ select="@align"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- "Support" for SVG -->
+
+<xsl:template match="svg:*" xmlns:svg="http://www.w3.org/2000/svg">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+
+<!-- The following works sometimes, but needs to take into account
+ 1. When there is no /*/@xml:base
+ 2. When the chunks are going somewhere else
+<xsl:variable name="relpath">
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="filename" select="@fileref"/>
+ </xsl:call-template>
+</xsl:variable>
+
+<xsl:choose>
+ <xsl:when test="/*/@xml:base
+ and starts-with($relpath,/*/@xml:base)">
+ <xsl:value-of select="substring-after($relpath,/*/@xml:base)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@fileref"/>
+ </xsl:otherwise>
+</xsl:choose>
+<xsl:value-of select="@fileref"/>
+ </xsl:when>
+-->
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri that needs xml:base processing -->
+ <xsl:call-template name="relative-uri">
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/highlight.xsl b/docs/xsl-generic/html/highlight.xsl
new file mode 100644
index 00000000..30f2153e
--- /dev/null
+++ b/docs/xsl-generic/html/highlight.xsl
@@ -0,0 +1,54 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xslthl="http://xslthl.sf.net"
+ exclude-result-prefixes="xslthl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: highlight.xsl 7266 2007-08-22 11:58:42Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match='xslthl:keyword'>
+ <b class="hl-keyword"><xsl:apply-templates/></b>
+</xsl:template>
+
+<xsl:template match='xslthl:string'>
+ <b class="hl-string"><i style="color:red"><xsl:apply-templates/></i></b>
+</xsl:template>
+
+<xsl:template match='xslthl:comment'>
+ <i class="hl-comment" style="color: silver"><xsl:apply-templates/></i>
+</xsl:template>
+
+<xsl:template match='xslthl:tag'>
+ <b class="hl-tag" style="color: blue"><xsl:apply-templates/></b>
+</xsl:template>
+
+<xsl:template match='xslthl:attribute'>
+ <span class="hl-attribute" style="color: blue"><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match='xslthl:value'>
+ <span class="hl-value" style="color: blue"><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match='xslthl:html'>
+ <b><i style="color: red"><xsl:apply-templates/></i></b>
+</xsl:template>
+
+<xsl:template match='xslthl:xslt'>
+ <b style="color: blue"><xsl:apply-templates/></b>
+</xsl:template>
+
+<xsl:template match='xslthl:section'>
+ <b><xsl:apply-templates/></b>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/html/html-rtf.xsl b/docs/xsl-generic/html/html-rtf.xsl
new file mode 100644
index 00000000..5855f64b
--- /dev/null
+++ b/docs/xsl-generic/html/html-rtf.xsl
@@ -0,0 +1,336 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:set="http://exslt.org/sets"
+ exclude-result-prefixes="exsl set"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: html-rtf.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This module contains templates that match against HTML nodes. It is used
+ to post-process result tree fragments for some sorts of cleanup.
+ These templates can only ever be fired by a processor that supports
+ exslt:node-set(). -->
+
+<!-- ==================================================================== -->
+
+<!-- insert.html.p mode templates insert a particular RTF at the beginning
+ of the first paragraph in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml"
+ match="html:p|p" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:if test="not(preceding::p|preceding::html:p)">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+ <xsl:apply-templates mode="insert.html.p">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.html.p">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- insert.html.text mode templates insert a particular RTF at the beginning
+ of the first text-node in the primary RTF. -->
+
+<xsl:template match="/" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:apply-templates mode="insert.html.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="insert.html.text">
+ <xsl:with-param name="mark" select="$mark"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+
+ <xsl:if test="not(preceding::text())">
+ <xsl:copy-of select="$mark"/>
+ </xsl:if>
+
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="processing-instruction()|comment()" mode="insert.html.text">
+ <xsl:param name="mark" select="'?'"/>
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- unwrap.p mode templates remove blocks from HTML p elements (and
+ other places where blocks aren't allowed) -->
+
+<xsl:template name="unwrap.p">
+ <xsl:param name="p"/>
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')
+ and function-available('set:leading')
+ and function-available('set:trailing')">
+ <xsl:apply-templates select="exsl:node-set($p)" mode="unwrap.p"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$p"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml"
+ match="html:p|p" mode="unwrap.p">
+ <!-- xmlns:html is necessary for the xhtml stylesheet case -->
+ <xsl:variable name="blocks" xmlns:html="http://www.w3.org/1999/xhtml"
+ select="address|blockquote|div|hr|h1|h2|h3|h4|h5|h6
+ |layer|p|pre|table|dl|menu|ol|ul|form
+ |html:address|html:blockquote|html:div|html:hr
+ |html:h1|html:h2|html:h3|html:h4|html:h5|html:h6
+ |html:layer|html:p|html:pre|html:table|html:dl
+ |html:menu|html:ol|html:ul|html:form"/>
+ <xsl:choose>
+ <xsl:when test="$blocks">
+ <xsl:call-template name="unwrap.p.nodes">
+ <xsl:with-param name="wrap" select="."/>
+ <xsl:with-param name="first" select="1"/>
+ <xsl:with-param name="nodes" select="node()"/>
+ <xsl:with-param name="blocks" select="$blocks"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="unwrap.p"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="unwrap.p">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="unwrap.p"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="unwrap.p">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template name="unwrap.p.nodes">
+ <xsl:param name="wrap" select="."/>
+ <xsl:param name="first" select="0"/>
+ <xsl:param name="nodes"/>
+ <xsl:param name="blocks"/>
+ <xsl:variable name="block" select="$blocks[1]"/>
+
+ <!-- This template should never get called if these functions aren't available -->
+ <!-- but this test is still necessary so that processors don't choke on the -->
+ <!-- function calls if they don't support the set: functions -->
+ <xsl:if test="function-available('set:leading')
+ and function-available('set:trailing')">
+ <xsl:choose>
+ <xsl:when test="$blocks">
+ <xsl:variable name="leading" select="set:leading($nodes,$block)"/>
+ <xsl:variable name="trailing" select="set:trailing($nodes,$block)"/>
+
+ <xsl:if test="(($wrap/@id or $wrap/@xml:id)
+ and $first = 1) or $leading">
+ <xsl:element name="{local-name($wrap)}" namespace="{namespace-uri($wrap)}">
+ <xsl:for-each select="$wrap/@*">
+ <xsl:if test="$first != 0 or local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates select="$leading" mode="unwrap.p"/>
+ </xsl:element>
+ </xsl:if>
+
+ <xsl:apply-templates select="$block" mode="unwrap.p"/>
+
+ <xsl:if test="$trailing">
+ <xsl:call-template name="unwrap.p.nodes">
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="nodes" select="$trailing"/>
+ <xsl:with-param name="blocks" select="$blocks[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:if test="(($wrap/@id or $wrap/@xml:id) and $first = 1) or $nodes">
+ <xsl:element name="{local-name($wrap)}" namespace="{namespace-uri($wrap)}">
+ <xsl:for-each select="$wrap/@*">
+ <xsl:if test="$first != 0 or local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates select="$nodes" mode="unwrap.p"/>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- make.verbatim.mode replaces spaces and newlines -->
+
+<xsl:template match="/" mode="make.verbatim.mode">
+ <xsl:apply-templates mode="make.verbatim.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="make.verbatim.mode">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="make.verbatim.mode"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="processing-instruction()|comment()" mode="make.verbatim.mode">
+ <xsl:copy/>
+</xsl:template>
+
+<xsl:template match="text()" mode="make.verbatim.mode">
+ <xsl:variable name="text" select="translate(., ' ', '&#160;')"/>
+
+ <xsl:choose>
+ <xsl:when test="not(contains($text, '&#xA;'))">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="len" select="string-length($text)"/>
+
+ <xsl:choose>
+ <xsl:when test="$len = 1">
+ <br/><xsl:text>&#xA;</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="half" select="$len div 2"/>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, 1, $half)"/>
+ </xsl:call-template>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text"
+ select="substring($text, ($half + 1), $len)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make-verbatim-recursive">
+ <xsl:param name="text" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="not(contains($text, '&#xA;'))">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="len" select="string-length($text)"/>
+
+ <xsl:choose>
+ <xsl:when test="$len = 1">
+ <br/><xsl:text>&#xA;</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="half" select="$len div 2"/>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text" select="substring($text, 1, $half)"/>
+ </xsl:call-template>
+ <xsl:call-template name="make-verbatim-recursive">
+ <xsl:with-param name="text"
+ select="substring($text, ($half + 1), $len)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- remove.empty.div mode templates remove empty blocks -->
+
+<xsl:template name="remove.empty.div">
+ <xsl:param name="div"/>
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')">
+ <xsl:apply-templates select="exsl:node-set($div)" mode="remove.empty.div"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$div"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template xmlns:html="http://www.w3.org/1999/xhtml"
+ match="html:p|p|html:div|div" mode="remove.empty.div">
+ <xsl:if test="node()">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="remove.empty.div"/>
+ </xsl:copy>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="*" mode="remove.empty.div">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="remove.empty.div"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()" mode="remove.empty.div">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/html.xsl b/docs/xsl-generic/html/html.xsl
new file mode 100644
index 00000000..79ce1555
--- /dev/null
+++ b/docs/xsl-generic/html/html.xsl
@@ -0,0 +1,241 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: html.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- The generate.html.title template is currently used for generating HTML -->
+<!-- "title" attributes for some inline elements only, but not for any -->
+<!-- block elements. It is called in eleven places in the inline.xsl -->
+<!-- file. But it's called by all the inline.* templates (e.g., -->
+<!-- inline.boldseq), which in turn are called by other (element) -->
+<!-- templates, so it results, currently, in supporting generation of the -->
+<!-- HTML "title" attribute for a total of about 92 elements. -->
+<!-- You can use mode="html.title.attribute" to get a title for -->
+<!-- an element specified by a param, including targets of cross references. -->
+<xsl:template name="generate.html.title">
+ <xsl:apply-templates select="." mode="html.title.attribute"/>
+</xsl:template>
+
+<!-- Generate a title attribute for the context node -->
+<xsl:template match="*" mode="html.title.attribute">
+ <xsl:variable name="is.title">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="is.title-numbered">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title-numbered'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="is.title-unnumbered">
+ <xsl:call-template name="gentext.template.exists">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name" select="local-name(.)"/>
+ <xsl:with-param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="gentext.title">
+ <xsl:if test="$is.title != 0 or
+ $is.title-numbered != 0 or
+ $is.title-unnumbered != 0">
+ <xsl:apply-templates select="."
+ mode="object.title.markup.textonly"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($gentext.title) != 0">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$gentext.title"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Fall back to alt if available -->
+ <xsl:when test="alt">
+ <xsl:attribute name="title">
+ <xsl:value-of select="normalize-space(alt)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dir">
+ <xsl:param name="inherit" select="0"/>
+
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="@dir">
+ <xsl:value-of select="@dir"/>
+ </xsl:when>
+ <xsl:when test="$inherit != 0">
+ <xsl:value-of select="ancestor::*/@dir[1]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$dir != ''">
+ <xsl:attribute name="dir">
+ <xsl:value-of select="$dir"/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="anchor">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="conditional" select="1"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$conditional = 0 or $node/@id or $node/@xml:id">
+ <a name="{$id}"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="href.target">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="href.target.with.base.dir">
+ <xsl:param name="context" select="."/>
+ <xsl:param name="object" select="."/>
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="dingbat">
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:call-template name="dingbat.characters">
+ <xsl:with-param name="dingbat" select="$dingbat"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="dingbat.characters">
+ <!-- now that I'm using the real serializer, all that dingbat malarky -->
+ <!-- isn't necessary anymore... -->
+ <xsl:param name="dingbat">bullet</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$dingbat='bullet'">&#x2022;</xsl:when>
+ <xsl:when test="$dingbat='copyright'">&#x00A9;</xsl:when>
+ <xsl:when test="$dingbat='trademark'">&#x2122;</xsl:when>
+ <xsl:when test="$dingbat='trade'">&#x2122;</xsl:when>
+ <xsl:when test="$dingbat='registered'">&#x00AE;</xsl:when>
+ <xsl:when test="$dingbat='service'">(SM)</xsl:when>
+ <xsl:when test="$dingbat='nbsp'">&#x00A0;</xsl:when>
+ <xsl:when test="$dingbat='ldquo'">&#x201C;</xsl:when>
+ <xsl:when test="$dingbat='rdquo'">&#x201D;</xsl:when>
+ <xsl:when test="$dingbat='lsquo'">&#x2018;</xsl:when>
+ <xsl:when test="$dingbat='rsquo'">&#x2019;</xsl:when>
+ <xsl:when test="$dingbat='em-dash'">&#x2014;</xsl:when>
+ <xsl:when test="$dingbat='mdash'">&#x2014;</xsl:when>
+ <xsl:when test="$dingbat='en-dash'">&#x2013;</xsl:when>
+ <xsl:when test="$dingbat='ndash'">&#x2013;</xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#x2022;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="id.warning">
+ <xsl:if test="$id.warnings != 0 and not(@id) and not(@xml:id) and parent::*">
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:when>
+ <xsl:when test="substring(local-name(*[1]),
+ string-length(local-name(*[1])-3) = 'info')
+ and *[1]/title">
+ <xsl:value-of select="*[1]/title[1]"/>
+ </xsl:when>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:value-of select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:when test="refnamediv/refname">
+ <xsl:value-of select="refnamediv/refname[1]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:message>
+ <xsl:text>ID recommended on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:if test="$title != ''">
+ <xsl:text>: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="string-length($title) &gt; 40">
+ <xsl:value-of select="substring($title,1,40)"/>
+ <xsl:text>...</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:message>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="*" mode="class.attribute">
+ <xsl:param name="class" select="local-name(.)"/>
+ <!-- permit customization of class attributes -->
+ <!-- Use element name by default -->
+ <xsl:attribute name="class">
+ <xsl:apply-templates select="." mode="class.value">
+ <xsl:with-param name="class" select="$class"/>
+ </xsl:apply-templates>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="*" mode="class.value">
+ <xsl:param name="class" select="local-name(.)"/>
+ <!-- permit customization of class value only -->
+ <!-- Use element name by default -->
+ <xsl:value-of select="$class"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/html/htmltbl.xsl b/docs/xsl-generic/html/htmltbl.xsl
new file mode 100644
index 00000000..5c7e3073
--- /dev/null
+++ b/docs/xsl-generic/html/htmltbl.xsl
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: htmltbl.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="colgroup" mode="htmlTable">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="htmlTable"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="col" mode="htmlTable">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="caption" mode="htmlTable">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+
+ <xsl:apply-templates select=".." mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="thead|tbody|tgroup|tr" mode="htmlTable">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="htmlTable"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="th|td" mode="htmlTable">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/> <!-- *not* mode=htmlTable -->
+ </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/index.xsl b/docs/xsl-generic/html/index.xsl
new file mode 100644
index 00000000..e8dfb93e
--- /dev/null
+++ b/docs/xsl-generic/html/index.xsl
@@ -0,0 +1,229 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: index.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. Unless generate.index -->
+ <!-- is non-zero, in which case, this is where the automatically -->
+ <!-- generated index should go. -->
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="count(*)>0 or $generate.index != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="index.titlepage"/>
+ <xsl:choose>
+ <xsl:when test="indexdiv">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[not(self::indexentry)]"/>
+ <!-- Because it's actually valid for Index to have neither any -->
+ <!-- Indexdivs nor any Indexentries, we need to check and make -->
+ <!-- sure that at least one Indexentry exists, and generate a -->
+ <!-- wrapper dl if there is at least one; otherwise, do nothing. -->
+ <xsl:if test="indexentry">
+ <!-- The indexentry template assumes a parent dl wrapper has -->
+ <!-- been generated; for Indexes that have Indexdivs, the dl -->
+ <!-- wrapper is generated by the indexdiv template; however, -->
+ <!-- for Indexes that lack Indexdivs, if we don't generate a -->
+ <!-- dl here, HTML output will not be valid. -->
+ <dl>
+ <xsl:apply-templates select="indexentry"/>
+ </dl>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="setindex">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. Unless generate.index -->
+ <!-- is non-zero, in which case, this is where the automatically -->
+ <!-- generated index should go. -->
+
+ <xsl:call-template name="id.warning"/>
+
+ <xsl:if test="count(*)>0 or $generate.index != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="setindex.titlepage"/>
+ <xsl:apply-templates/>
+
+ <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
+ <xsl:call-template name="generate-index">
+ <xsl:with-param name="scope" select="/"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="not(parent::article)">
+ <xsl:call-template name="process.footnotes"/>
+ </xsl:if>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="index/indexinfo"></xsl:template>
+<xsl:template match="index/info"></xsl:template>
+<xsl:template match="index/title"></xsl:template>
+<xsl:template match="index/subtitle"></xsl:template>
+<xsl:template match="index/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexdiv">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="*[not(self::indexentry)]"/>
+ <dl>
+ <xsl:apply-templates select="indexentry"/>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="indexdiv/title">
+ <h3>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexterm">
+ <!-- this one must have a name, even if it doesn't have an ID -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <a class="indexterm" name="{$id}"/>
+</xsl:template>
+
+<xsl:template match="primary|secondary|tertiary|see|seealso">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="indexentry">
+ <xsl:apply-templates select="primaryie"/>
+</xsl:template>
+
+<xsl:template match="primaryie">
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <xsl:choose>
+ <xsl:when test="following-sibling::secondaryie">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="following-sibling::secondaryie"/>
+ </dl>
+ </dd>
+ </xsl:when>
+ <xsl:when test="following-sibling::seeie
+ |following-sibling::seealsoie">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="following-sibling::seeie
+ |following-sibling::seealsoie"/>
+ </dl>
+ </dd>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="secondaryie">
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <xsl:choose>
+ <xsl:when test="following-sibling::tertiaryie">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="following-sibling::tertiaryie"/>
+ </dl>
+ </dd>
+ </xsl:when>
+ <xsl:when test="following-sibling::seeie
+ |following-sibling::seealsoie">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="following-sibling::seeie
+ |following-sibling::seealsoie"/>
+ </dl>
+ </dd>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tertiaryie">
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+ <xsl:if test="following-sibling::seeie
+ |following-sibling::seealsoie">
+ <dd>
+ <dl>
+ <xsl:apply-templates select="following-sibling::seeie
+ |following-sibling::seealsoie"/>
+ </dl>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="seeie|seealsoie">
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/info.xsl b/docs/xsl-generic/html/info.xsl
new file mode 100644
index 00000000..61ade512
--- /dev/null
+++ b/docs/xsl-generic/html/info.xsl
@@ -0,0 +1,43 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: info.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- These templates define the "default behavior" for info
+ elements. Even if you don't process the *info wrappers,
+ some of these elements are needed because the elements are
+ processed from named templates that are called with modes.
+ Since modes aren't sticky, these rules apply.
+ (TODO: clarify this comment) -->
+
+<!-- ==================================================================== -->
+<!-- called from named templates in a given mode -->
+
+<xsl:template match="corpauthor">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="jobtitle">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/inline.xsl b/docs/xsl-generic/html/inline.xsl
new file mode 100644
index 00000000..a3e10ded
--- /dev/null
+++ b/docs/xsl-generic/html/inline.xsl
@@ -0,0 +1,1439 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+ <!ENTITY comment.block.parents "parent::answer|parent::appendix|parent::article|parent::bibliodiv|parent::bibliography|parent::blockquote|parent::caution|parent::chapter|parent::glossary|parent::glossdiv|parent::important|parent::index|parent::indexdiv|parent::listitem|parent::note|parent::orderedlist|parent::partintro|parent::preface|parent::procedure|parent::qandadiv|parent::qandaset|parent::question|parent::refentry|parent::refnamediv|parent::refsect1|parent::refsect2|parent::refsect3|parent::refsection|parent::refsynopsisdiv|parent::sect1|parent::sect2|parent::sect3|parent::sect4|parent::sect5|parent::section|parent::setindex|parent::sidebar|parent::simplesect|parent::taskprerequisites|parent::taskrelated|parent::tasksummary|parent::warning">
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xlink='http://www.w3.org/1999/xlink'
+ xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks"
+ exclude-result-prefixes="xlink suwl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: inline.xsl 7232 2007-08-11 16:10:40Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+<xsl:template name="simple.xlink">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="content">
+ <xsl:apply-templates/>
+ </xsl:param>
+ <xsl:param name="a.target"/>
+ <xsl:param name="linkend" select="$node/@linkend"/>
+ <xsl:param name="xhref" select="$node/@xlink:href"/>
+
+ <xsl:variable name="link">
+ <xsl:choose>
+ <xsl:when test="$xhref and
+ (not($node/@xlink:type) or
+ $node/@xlink:type='simple')">
+
+ <!-- Is it a local idref or a uri? -->
+ <xsl:variable name="is.idref">
+ <xsl:choose>
+ <!-- if the href starts with # and does not contain an "(" -->
+ <!-- or if the href starts with #xpointer(id(, it's just an ID -->
+ <xsl:when test="starts-with($xhref,'#')
+ and (not(contains($xhref,'&#40;'))
+ or starts-with($xhref,
+ '#xpointer&#40;id&#40;'))">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Is it an olink ? -->
+ <xsl:variable name="is.olink">
+ <xsl:choose>
+ <!-- If xlink:role="http://docbook.org/xlink/role/olink" -->
+ <!-- and if the href contains # -->
+ <xsl:when test="contains($xhref,'#') and
+ @xlink:role = $xolink.role">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$is.idref = 1">
+
+ <xsl:variable name="idref">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="targets" select="key('id',$idref)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$idref"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XLink to nonexistent id: </xsl:text>
+ <xsl:value-of select="$idref"/>
+ </xsl:message>
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$node/@xlink:title">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$node/@xlink:title"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$target"
+ mode="html.title.attribute"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$a.target">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$a.target"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:copy-of select="$content"/>
+
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$is.olink = 1">
+ <xsl:call-template name="olink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- otherwise it's a URI -->
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$xhref"/>
+ </xsl:attribute>
+ <xsl:if test="$node/@xlink:title">
+ <xsl:attribute name="title">
+ <xsl:value-of select="$node/@xlink:title"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$content"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$linkend">
+ <xsl:variable name="targets" select="key('id',$linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ </xsl:call-template>
+
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="$target" mode="html.title.attribute"/>
+
+ <xsl:copy-of select="$content"/>
+
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('suwl:unwrapLinks')">
+ <xsl:copy-of select="suwl:unwrapLinks($link)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.charseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- * if you want output from the inline.charseq template wrapped in -->
+ <!-- * something other than a Span, call the template with some value -->
+ <!-- * for the 'wrapper-name' param -->
+ <xsl:param name="wrapper-name">span</xsl:param>
+ <xsl:element name="{$wrapper-name}">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="inline.monoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+</xsl:template>
+
+<xsl:template name="inline.boldseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+
+ <!-- don't put <strong> inside figure, example, or table titles -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title'
+ and (local-name(../..) = 'figure'
+ or local-name(../..) = 'example'
+ or local-name(../..) = 'table')">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong>
+ <xsl:copy-of select="$content"/>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="apply-annotations"/>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.italicseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <em>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </em>
+</xsl:template>
+
+<xsl:template name="inline.boldmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <!-- don't put <strong> inside figure, example, or table titles -->
+ <!-- or other titles that may already be represented with <strong>'s. -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title'
+ and (local-name(../..) = 'figure'
+ or local-name(../..) = 'example'
+ or local-name(../..) = 'table'
+ or local-name(../..) = 'formalpara')">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <code>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ </code>
+ <xsl:call-template name="apply-annotations"/>
+ </strong>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.italicmonoseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <em>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <code>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </code>
+ </em>
+</xsl:template>
+
+<xsl:template name="inline.superscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <sup>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </sup>
+</xsl:template>
+
+<xsl:template name="inline.subscriptseq">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <sub>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="dir"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:call-template name="apply-annotations"/>
+ </sub>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- some special cases -->
+
+<xsl:template match="author">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="editor">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="authorinitials">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="accel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="action">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="application">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="classname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="exceptionname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="interfacename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="methodname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="command">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="computeroutput">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="constant">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="database">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="date">
+ <!-- should this support locale-specific formatting? how? -->
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorcode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errorname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortype">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="errortext">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="envar">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="filename">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="function">
+ <xsl:choose>
+ <xsl:when test="$function.parens != '0'
+ and (parameter or function or replaceable)">
+ <xsl:variable name="nodes" select="text()|*"/>
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="$nodes[1]"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="$nodes[position()>1]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.monoseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="function/parameter" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="function/replaceable" priority="2">
+ <xsl:call-template name="inline.italicmonoseq"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="guibutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guiicon">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guilabel">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guimenuitem">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="guisubmenu">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="hardware">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interface">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="interfacedefinition">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keycap">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="keycode">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="keysym">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="literal">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="code">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="medialabel">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="shortcut">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="mousebutton">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="option">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="package">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="parameter">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="property">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="prompt">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="replaceable" priority="1">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="returnvalue">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="structfield">
+ <xsl:call-template name="inline.italicmonoseq"/>
+</xsl:template>
+
+<xsl:template match="structname">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="symbol">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="systemitem">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="token">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="type">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="userinput">
+ <xsl:call-template name="inline.boldmonoseq"/>
+</xsl:template>
+
+<xsl:template match="abbrev">
+ <xsl:call-template name="inline.charseq">
+ <xsl:with-param name="wrapper-name">abbr</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="acronym">
+ <xsl:call-template name="inline.charseq">
+ <xsl:with-param name="wrapper-name">acronym</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="citerefentry">
+ <xsl:choose>
+ <xsl:when test="$citerefentry.link != '0'">
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="generate.citerefentry.link"/>
+ </xsl:attribute>
+ <xsl:call-template name="inline.charseq"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.citerefentry.link">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template name="x.generate.citerefentry.link">
+ <xsl:text>http://example.com/cgi-bin/man.cgi?</xsl:text>
+ <xsl:value-of select="refentrytitle"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="manvolnum"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="citetitle">
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="emphasis">
+ <span>
+ <xsl:choose>
+ <xsl:when test="@role and $emphasis.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="@role = 'bold' or @role='strong'">
+ <!-- backwards compatibility: make bold into b elements, but -->
+ <!-- don't put bold inside figure, example, or table titles -->
+ <xsl:choose>
+ <xsl:when test="local-name(..) = 'title'
+ and (local-name(../..) = 'figure'
+ or local-name(../..) = 'example'
+ or local-name(../..) = 'table')">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <strong><xsl:apply-templates/></strong>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@role and $emphasis.propagates.style != 0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <em><xsl:apply-templates/></em>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </span>
+</xsl:template>
+
+<xsl:template match="foreignphrase">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="@lang or @xml:lang">
+ <xsl:call-template name="language.attribute"/>
+ </xsl:if>
+ <xsl:call-template name="inline.italicseq"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="markup">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phrase">
+ <span>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:if test="@lang or @xml:lang">
+ <xsl:call-template name="language.attribute"/>
+ </xsl:if>
+ <xsl:if test="@role and $phrase.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <xsl:call-template name="dir"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="quote">
+ <xsl:variable name="depth">
+ <xsl:call-template name="dot.count">
+ <xsl:with-param name="string">
+ <xsl:number level="multiple"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$depth mod 2 = 0">
+ <xsl:call-template name="gentext.startquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.endquote"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext.nestedstartquote"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="gentext.nestedendquote"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varname">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<xsl:template match="wordasword">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="lineannotation">
+ <em>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="inline.charseq"/>
+ </em>
+</xsl:template>
+
+<xsl:template match="superscript">
+ <xsl:call-template name="inline.superscriptseq"/>
+</xsl:template>
+
+<xsl:template match="subscript">
+ <xsl:call-template name="inline.subscriptseq"/>
+</xsl:template>
+
+<xsl:template match="trademark">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:choose>
+ <xsl:when test="@class = 'copyright'
+ or @class = 'registered'">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@class = 'service'">
+ <sup>SM</sup>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="'trademark'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="firstterm">
+ <xsl:call-template name="glossterm">
+ <xsl:with-param name="firstterm" select="1"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="glossterm" name="glossterm">
+ <xsl:param name="firstterm" select="0"/>
+
+ <!-- To avoid extra <a name=""> anchor from inline.italicseq -->
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="($firstterm.only.link = 0 or $firstterm = 1) and @linkend">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$target">
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend)
+ and ($firstterm.only.link = 0 or $firstterm = 1)
+ and ($glossterm.auto.link != 0)
+ and $glossary.collection != ''">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform"><xsl:value-of select="@baseform"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="cterm"
+ select="(document($glossary.collection,.)//glossentry[glossterm=$term])[1]"/>
+
+ <!-- HACK HACK HACK! But it works... -->
+ <!-- You'd need to do more work if you wanted to chunk on glossdiv, though -->
+
+ <xsl:variable name="glossary" select="//glossary[@role='auto']"/>
+
+ <xsl:if test="count($glossary) != 1">
+ <xsl:message>
+ <xsl:text>Warning: glossary.collection specified, but there are </xsl:text>
+ <xsl:value-of select="count($glossary)"/>
+ <xsl:text> automatic glossaries</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="glosschunk">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$glossary"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="chunkbase">
+ <xsl:choose>
+ <xsl:when test="contains($glosschunk, '#')">
+ <xsl:value-of select="substring-before($glosschunk, '#')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$glosschunk"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($cterm)">
+ <xsl:message>
+ <xsl:text>There's no entry for </xsl:text>
+ <xsl:value-of select="$term"/>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="$glossary.collection"/>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cterm"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <a href="{$chunkbase}#{$id}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not(@linkend)
+ and ($firstterm.only.link = 0 or $firstterm = 1)
+ and $glossterm.auto.link != 0">
+ <xsl:variable name="term">
+ <xsl:choose>
+ <xsl:when test="@baseform">
+ <xsl:value-of select="normalize-space(@baseform)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="targets"
+ select="//glossentry[normalize-space(glossterm)=$term
+ or normalize-space(glossterm/@baseform)=$term]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="count($targets)=0">
+ <xsl:message>
+ <xsl:text>Error: no glossentry for glossterm: </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:call-template name="inline.italicseq">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="termdef">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'prefix'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'termdef'"/>
+ <xsl:with-param name="name" select="'suffix'"/>
+ </xsl:call-template>
+ </span>
+</xsl:template>
+
+<xsl:template match="sgmltag|tag">
+ <xsl:call-template name="format.sgmltag"/>
+</xsl:template>
+
+<xsl:template name="format.sgmltag">
+ <xsl:param name="class">
+ <xsl:choose>
+ <xsl:when test="@class">
+ <xsl:value-of select="@class"/>
+ </xsl:when>
+ <xsl:otherwise>element</xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test="$class='attribute'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='attvalue'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='element'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class='endtag'">
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='genentity'">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='numcharref'">
+ <xsl:text>&amp;#</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='paramentity'">
+ <xsl:text>%</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='pi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='xmlpi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>?&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='starttag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='emptytag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>/&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class='sgmlcomment' or $class='comment'">
+ <xsl:text>&lt;!--</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>--&gt;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="concat('sgmltag-', $class)"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="generate.html.title"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </code>
+</xsl:template>
+
+<xsl:template match="email">
+ <xsl:call-template name="inline.monoseq">
+ <xsl:with-param name="content">
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&lt;</xsl:text>
+ </xsl:if>
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:text>mailto:</xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ <xsl:if test="not($email.delimiters.enabled = 0)">
+ <xsl:text>&gt;</xsl:text>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="keycombo">
+ <xsl:variable name="action" select="@action"/>
+ <xsl:variable name="joinchar">
+ <xsl:choose>
+ <xsl:when test="$action='seq'"><xsl:text> </xsl:text></xsl:when>
+ <xsl:when test="$action='simul'">+</xsl:when>
+ <xsl:when test="$action='press'">-</xsl:when>
+ <xsl:when test="$action='click'">-</xsl:when>
+ <xsl:when test="$action='double-click'">-</xsl:when>
+ <xsl:when test="$action='other'"></xsl:when>
+ <xsl:otherwise>+</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="*">
+ <xsl:if test="position()>1"><xsl:value-of select="$joinchar"/></xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="uri">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="menuchoice">
+ <xsl:variable name="shortcut" select="./shortcut"/>
+ <xsl:call-template name="process.menuchoice"/>
+ <xsl:if test="$shortcut">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="$shortcut"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process.menuchoice">
+ <xsl:param name="nodelist" select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($nodelist)"></xsl:when>
+ <xsl:when test="$count=1">
+ <xsl:apply-templates select="$nodelist[$count=position()]"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="node" select="$nodelist[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='guimenuitem'
+ or local-name($node)='guisubmenu'">
+ <xsl:value-of select="$menuchoice.menu.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$menuchoice.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="$node"/>
+ <xsl:call-template name="process.menuchoice">
+ <xsl:with-param name="nodelist" select="$nodelist"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="optional">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+</xsl:template>
+
+<xsl:template match="citation">
+ <!-- todo: integrate with bibliography collection -->
+ <xsl:variable name="targets" select="(//biblioentry | //bibliomixed)[abbrev = string(current())]"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <!-- try automatic linking based on match to abbrev -->
+ <xsl:when test="$target and not(xref) and not(link)">
+
+ <xsl:text>[</xsl:text>
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:apply-templates select="$target" mode="citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.charseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </a>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="citation">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="comment[&comment.block.parents;]|remark[&comment.block.parents;]">
+ <xsl:if test="$show.comments != 0">
+ <p class="remark"><i><xsl:call-template name="inline.charseq"/></i></p>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="comment|remark">
+ <xsl:if test="$show.comments != 0">
+ <em><xsl:call-template name="inline.charseq"/></em>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="productname">
+ <xsl:call-template name="inline.charseq"/>
+ <xsl:if test="@class">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="productnumber">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="pob|street|city|state|postcode|country|otheraddr">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="phone|fax">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- in Addresses, for example -->
+<xsl:template match="honorific|firstname|surname|lineage|othername">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="person">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="personname"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="personname">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="org">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgdiv">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="affiliation">
+ <xsl:param name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apply-annotations"/>
+ </xsl:param>
+
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$content"/>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="beginpage">
+ <!-- does nothing; this *is not* markup to force a page break. -->
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/html/keywords.xsl b/docs/xsl-generic/html/keywords.xsl
new file mode 100644
index 00000000..c12e39fc
--- /dev/null
+++ b/docs/xsl-generic/html/keywords.xsl
@@ -0,0 +1,35 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: keywords.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="keywordset"></xsl:template>
+<xsl:template match="subjectset"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="keywordset" mode="html.header">
+ <meta name="keywords">
+ <xsl:attribute name="content">
+ <xsl:apply-templates select="keyword" mode="html.header"/>
+ </xsl:attribute>
+ </meta>
+</xsl:template>
+
+<xsl:template match="keyword" mode="html.header">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::keyword">, </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/lists.xsl b/docs/xsl-generic/html/lists.xsl
new file mode 100644
index 00000000..2ada156c
--- /dev/null
+++ b/docs/xsl-generic/html/lists.xsl
@@ -0,0 +1,1103 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: lists.xsl 6963 2007-07-07 08:15:38Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="itemizedlist">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::listitem
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::listitem)]
+ |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <ul>
+ <xsl:if test="$css.decoration != 0">
+ <xsl:attribute name="type">
+ <xsl:call-template name="list.itemsymbol"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@spacing='compact'">
+ <xsl:attribute name="compact">
+ <xsl:value-of select="@spacing"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates
+ select="listitem
+ |comment()[preceding-sibling::listitem]
+ |processing-instruction()[preceding-sibling::listitem]"/>
+ </ul>
+ </div>
+</xsl:template>
+
+<xsl:template match="itemizedlist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+ <xsl:variable name="mark" select="../@mark"/>
+ <xsl:variable name="override" select="@override"/>
+
+ <xsl:variable name="usemark">
+ <xsl:choose>
+ <xsl:when test="$override != ''">
+ <xsl:value-of select="$override"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$mark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="cssmark">
+ <xsl:choose>
+ <xsl:when test="$usemark = 'opencircle'">circle</xsl:when>
+ <xsl:when test="$usemark = 'bullet'">disc</xsl:when>
+ <xsl:when test="$usemark = 'box'">square</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$usemark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <li>
+ <xsl:if test="$css.decoration = '1' and $cssmark != ''">
+ <xsl:attribute name="style">
+ <xsl:text>list-style-type: </xsl:text>
+ <xsl:value-of select="$cssmark"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+</xsl:template>
+
+<xsl:template match="orderedlist">
+ <xsl:variable name="start">
+ <xsl:call-template name="orderedlist-starting-number"/>
+ </xsl:variable>
+
+ <xsl:variable name="numeration">
+ <xsl:call-template name="list.numeration"/>
+ </xsl:variable>
+
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="$numeration='arabic'">1</xsl:when>
+ <xsl:when test="$numeration='loweralpha'">a</xsl:when>
+ <xsl:when test="$numeration='lowerroman'">i</xsl:when>
+ <xsl:when test="$numeration='upperalpha'">A</xsl:when>
+ <xsl:when test="$numeration='upperroman'">I</xsl:when>
+ <!-- What!? This should never happen -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected numeration: </xsl:text>
+ <xsl:value-of select="$numeration"/>
+ </xsl:message>
+ <xsl:value-of select="1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::listitem
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::listitem)]
+ |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+ <ol>
+ <xsl:if test="$start != '1'">
+ <xsl:attribute name="start">
+ <xsl:value-of select="$start"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$numeration != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$type"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@spacing='compact'">
+ <xsl:attribute name="compact">
+ <xsl:value-of select="@spacing"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates
+ select="listitem
+ |comment()[preceding-sibling::listitem]
+ |processing-instruction()[preceding-sibling::listitem]"/>
+ </ol>
+ </div>
+</xsl:template>
+
+<xsl:template match="orderedlist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem">
+ <li>
+ <xsl:if test="@override">
+ <xsl:attribute name="value">
+ <xsl:value-of select="@override"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+</xsl:template>
+
+<xsl:template match="variablelist">
+ <xsl:variable name="pi-presentation">
+ <xsl:call-template name="pi.dbhtml_list-presentation"/>
+ </xsl:variable>
+
+ <xsl:variable name="presentation">
+ <xsl:choose>
+ <xsl:when test="$pi-presentation != ''">
+ <xsl:value-of select="$pi-presentation"/>
+ </xsl:when>
+ <xsl:when test="$variablelist.as.table != 0">
+ <xsl:value-of select="'table'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'list'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="list-width">
+ <xsl:call-template name="pi.dbhtml_list-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="term-width">
+ <xsl:call-template name="pi.dbhtml_term-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'table'">
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::varlistentry
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::varlistentry)]
+ |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+ <table border="0">
+ <xsl:if test="$list-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$list-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+ <col align="left" valign="top">
+ <xsl:if test="$term-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$term-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ </col>
+ <tbody>
+ <xsl:apply-templates mode="varlist-table"
+ select="varlistentry
+ |comment()[preceding-sibling::varlistentry]
+ |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </tbody>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::varlistentry
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::varlistentry)]
+ |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+ <dl>
+ <xsl:apply-templates
+ select="varlistentry
+ |comment()[preceding-sibling::varlistentry]
+ |processing-instruction()[preceding-sibling::varlistentry]"/>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="variablelist/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/titleabbrev">
+ <!--nop-->
+</xsl:template>
+
+<xsl:template match="listitem" mode="xref">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="listitem/simpara" priority="2">
+ <!-- If a listitem contains only a single simpara, don't output
+ the <p> wrapper; this has the effect of creating an li
+ with simple text content. -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*)
+ and not (following-sibling::*)">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varlistentry">
+ <dt>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="term"/>
+ </dt>
+ <dd>
+ <xsl:apply-templates select="listitem"/>
+ </dd>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="varlist-table">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbhtml_term-presentation">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="separator">
+ <xsl:call-template name="pi.dbhtml_term-separator">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="variablelist" count="varlistentry"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <td>
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="$presentation = 'bold'">
+ <b>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </b>
+ </xsl:when>
+ <xsl:when test="$presentation = 'italic'">
+ <i>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </i>
+ </xsl:when>
+ <xsl:when test="$presentation = 'bold-italic'">
+ <b>
+ <i>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </i>
+ </b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="term"/>
+ <xsl:value-of select="$separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </td>
+ <td>
+ <xsl:apply-templates select="listitem"/>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="varlistentry/term">
+ <span class="term">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * if we have multiple terms in the same varlistentry, generate -->
+ <!-- * a separator (", " by default) and/or an additional line -->
+ <!-- * break after each one except the last -->
+ <xsl:value-of select="$variablelist.term.separator"/>
+ <xsl:if test="not($variablelist.term.break.after = '0')">
+ <br/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<xsl:template match="varlistentry/listitem">
+ <!-- we can't just drop the anchor in since some browsers (Opera)
+ get confused about line breaks if we do. So if the first child
+ is a para, assume the para will put in the anchor. Otherwise,
+ put the anchor in anyway. -->
+ <xsl:if test="local-name(child::*[1]) != 'para'">
+ <xsl:call-template name="anchor"/>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <div class="{@revisionflag}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="simplelist">
+ <!-- with no type specified, the default is 'vert' -->
+ <xsl:call-template name="anchor"/>
+ <table class="simplelist" border="0" summary="Simple list">
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='inline']">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <!-- if dbchoice PI exists, use that to determine the choice separator -->
+ <!-- (that is, equivalent of "and" or "or" in current locale), or literal -->
+ <!-- value of "choice" otherwise -->
+ <xsl:variable name="localized-choice-separator">
+ <xsl:choose>
+ <xsl:when test="processing-instruction('dbchoice')">
+ <xsl:call-template name="select.choice.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- empty -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="member">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ <xsl:if test="position() = last() - 1">
+ <xsl:if test="$localized-choice-separator != ''">
+ <xsl:value-of select="$localized-choice-separator"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </span>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='horiz']">
+ <xsl:call-template name="anchor"/>
+ <table class="simplelist" border="0" summary="Simple list">
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='vert']">
+ <xsl:call-template name="anchor"/>
+ <table class="simplelist" border="0" summary="Simple list">
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols">
+ <xsl:choose>
+ <xsl:when test="@columns">
+ <xsl:value-of select="@columns"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </table>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+
+ <xsl:if test="$cell &lt;= count($members)">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="$members[1]"/>
+ <xsl:with-param name="rownum" select="(($cell - 1) div $cols) + 1"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </tr>
+ <xsl:call-template name="simplelist.horiz">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell + $cols"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <td>
+ <xsl:choose>
+ <xsl:when test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:call-template name="simplelist.horiz.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="rows"
+ select="floor((count($members)+$cols - 1) div $cols)"/>
+
+ <xsl:if test="$cell &lt;= $rows">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="$members[1]"/>
+ <xsl:with-param name="rownum" select="$cell"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell"/>
+ <xsl:with-param name="members" select="$members"/>
+ </xsl:call-template>
+ </tr>
+ <xsl:call-template name="simplelist.vert">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="cell" select="$cell+1"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert.row">
+ <xsl:param name="cols">1</xsl:param>
+ <xsl:param name="rows">1</xsl:param>
+ <xsl:param name="cell">1</xsl:param>
+ <xsl:param name="members" select="./member"/>
+ <xsl:param name="curcol">1</xsl:param>
+
+ <xsl:if test="$curcol &lt;= $cols">
+ <td>
+ <xsl:choose>
+ <xsl:when test="$members[position()=$cell]">
+ <xsl:apply-templates select="$members[position()=$cell]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:call-template name="simplelist.vert.row">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ <xsl:with-param name="cell" select="$cell+$rows"/>
+ <xsl:with-param name="members" select="$members"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="member">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="procedure">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:variable name="preamble"
+ select="*[not(self::step
+ or self::title
+ or self::titleabbrev)]
+ |comment()[not(preceding-sibling::step)]
+ |processing-instruction()[not(preceding-sibling::step)]"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional">
+ <xsl:choose>
+ <xsl:when test="title">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="title and $placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:choose>
+ <xsl:when test="count(step) = 1">
+ <ul>
+ <xsl:apply-templates
+ select="step
+ |comment()[preceding-sibling::step]
+ |processing-instruction()[preceding-sibling::step]"/>
+ </ul>
+ </xsl:when>
+ <xsl:otherwise>
+ <ol>
+ <xsl:attribute name="type">
+ <xsl:value-of select="substring($procedure.step.numeration.formats,1,1)"/>
+ </xsl:attribute>
+ <xsl:apply-templates
+ select="step
+ |comment()[preceding-sibling::step]
+ |processing-instruction()[preceding-sibling::step]"/>
+ </ol>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="title and $placement != 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="procedure/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="substeps">
+ <xsl:variable name="numeration">
+ <xsl:call-template name="procedure.step.numeration"/>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <ol type="{$numeration}">
+ <xsl:apply-templates/>
+ </ol>
+</xsl:template>
+
+<xsl:template match="step">
+ <li>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </li>
+</xsl:template>
+
+<xsl:template match="stepalternatives">
+ <xsl:call-template name="anchor"/>
+ <ul>
+ <xsl:apply-templates/>
+ </ul>
+</xsl:template>
+
+<xsl:template match="step/title">
+ <p class="title">
+ <b>
+ <xsl:apply-templates/>
+ </b>
+ </p>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="segmentedlist">
+ <xsl:variable name="presentation">
+ <xsl:call-template name="pi.dbhtml_list-presentation"/>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="$presentation = 'table'">
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </xsl:when>
+ <xsl:when test="$presentation = 'list'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$segmentedlist.as.table != 0">
+ <xsl:apply-templates select="." mode="seglist-table"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="segmentedlist/title">
+ <div class="title">
+ <strong><span class="title"><xsl:apply-templates/></span></strong>
+ </div>
+</xsl:template>
+
+<xsl:template match="segtitle">
+</xsl:template>
+
+<xsl:template match="segtitle" mode="segtitle-in-seg">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="seglistitem">
+ <div class="seglistitem">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="seg">
+ <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/>
+ <xsl:variable name="seglist" select="ancestor::segmentedlist"/>
+ <xsl:variable name="segtitles" select="$seglist/segtitle"/>
+
+ <!--
+ Note: segtitle is only going to be the right thing in a well formed
+ SegmentedList. If there are too many Segs or too few SegTitles,
+ you'll get something odd...maybe an error
+ -->
+
+ <div class="seg">
+ <strong>
+ <span class="segtitle">
+ <xsl:apply-templates select="$segtitles[$segnum=position()]"
+ mode="segtitle-in-seg"/>
+ <xsl:text>: </xsl:text>
+ </span>
+ </strong>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="segmentedlist" mode="seglist-table">
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="list-width">
+ <xsl:call-template name="pi.dbhtml_list-width"/>
+ </xsl:variable>
+
+ <xsl:apply-templates select="title"/>
+
+ <table border="0">
+ <xsl:if test="$list-width != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$list-width"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+ <thead>
+ <tr class="segtitle">
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="row" select="segtitle[1]"/>
+ <xsl:with-param name="rownum" select="1"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="segtitle" mode="seglist-table"/>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:apply-templates select="seglistitem" mode="seglist-table"/>
+ </tbody>
+ </table>
+</xsl:template>
+
+<xsl:template match="segtitle" mode="seglist-table">
+ <th><xsl:apply-templates/></th>
+</xsl:template>
+
+<xsl:template match="seglistitem" mode="seglist-table">
+ <xsl:variable name="seglinum">
+ <xsl:number from="segmentedlist" count="seglistitem"/>
+ </xsl:variable>
+
+ <tr class="seglistitem">
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum" select="$seglinum + 1"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="seglist-table"/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="seg" mode="seglist-table">
+ <td class="seg"><xsl:apply-templates/></td>
+</xsl:template>
+
+<xsl:template match="seg[1]" mode="seglist-table">
+ <td class="seg">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="ancestor::seglistitem"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </td>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="calloutlist">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title|info/title">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <!-- Preserve order of PIs and comments -->
+ <xsl:apply-templates
+ select="*[not(self::callout or self::title or self::titleabbrev)]
+ |comment()[not(preceding-sibling::callout)]
+ |processing-instruction()[not(preceding-sibling::callout)]"/>
+
+ <xsl:choose>
+ <xsl:when test="$callout.list.table != 0">
+ <table border="0" summary="Callout list">
+ <xsl:apply-templates select="callout
+ |comment()[preceding-sibling::callout]
+ |processing-instruction()[preceding-sibling::callout]"/>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <dl compact="compact">
+ <xsl:apply-templates select="callout
+ |comment()[preceding-sibling::callout]
+ |processing-instruction()[preceding-sibling::callout]"/>
+ </dl>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="calloutlist/title">
+</xsl:template>
+
+<xsl:template match="callout">
+ <xsl:choose>
+ <xsl:when test="$callout.list.table != 0">
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="calloutlist" count="callout"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <td width="5%" valign="top" align="left">
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ </p>
+ </td>
+ <td valign="top" align="left">
+ <xsl:apply-templates/>
+ </td>
+ </tr>
+ </xsl:when>
+ <xsl:otherwise>
+ <dt>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs" select="@arearefs"/>
+ </xsl:call-template>
+ </dt>
+ <dd><xsl:apply-templates/></dd>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="callout/simpara" priority="2">
+ <!-- If a callout contains only a single simpara, don't output
+ the <p> wrapper; this has the effect of creating an li
+ with simple text content. -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*)
+ and not (following-sibling::*)">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <xsl:if test="@role and $para.propagates.style != 0">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="callout.arearefs">
+ <xsl:param name="arearefs"></xsl:param>
+ <xsl:if test="$arearefs!=''">
+ <xsl:choose>
+ <xsl:when test="substring-before($arearefs,' ')=''">
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef" select="$arearefs"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout.arearef">
+ <xsl:with-param name="arearef"
+ select="substring-before($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="callout.arearefs">
+ <xsl:with-param name="arearefs"
+ select="substring-after($arearefs,' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="callout.arearef">
+ <xsl:param name="arearef"></xsl:param>
+ <xsl:variable name="targets" select="key('id',$arearef)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="$arearef"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="count($target)=0">
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='co'">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="$arearef"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="$target" mode="callout-bug"/>
+ </a>
+ <xsl:text> </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($target)='areaset'">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name($target)='area'">
+ <xsl:choose>
+ <xsl:when test="$target/parent::areaset">
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target/parent::areaset"
+ mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="$target" mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="orderedlist-starting-number">
+ <xsl:param name="list" select="."/>
+ <xsl:variable name="pi-start">
+ <xsl:call-template name="pi.dbhtml_start">
+ <xsl:with-param name="node" select="$list"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="output-orderedlist-starting-number">
+ <xsl:with-param name="list" select="$list"/>
+ <xsl:with-param name="pi-start" select="$pi-start"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/maketoc.xsl b/docs/xsl-generic/html/maketoc.xsl
new file mode 100644
index 00000000..1ba3931e
--- /dev/null
+++ b/docs/xsl-generic/html/maketoc.xsl
@@ -0,0 +1,86 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: maketoc.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="docbook.xsl"/>
+<xsl:import href="chunk.xsl"/>
+
+<xsl:output method="xml" indent="no" encoding='utf-8'/>
+
+<xsl:param name="toc.list.type" select="'tocentry'"/>
+
+<!-- refentry in autotoc.xsl does not use subtoc, so must
+ handle it explicitly here. -->
+<xsl:template match="refentry" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+<xsl:template name="subtoc">
+ <xsl:param name="nodes" select="NOT-AN-ELEMENT"/>
+ <xsl:variable name="filename">
+ <xsl:apply-templates select="." mode="chunk-filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:if test="$chunk != 0">
+ <xsl:call-template name="indent-spaces"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <tocentry linkend="{$id}">
+ <xsl:processing-instruction name="dbhtml">
+ <xsl:text>filename="</xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>"</xsl:text>
+ </xsl:processing-instruction>
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:apply-templates mode="toc" select="$nodes"/>
+ <xsl:call-template name="indent-spaces"/>
+ </tocentry>
+ <xsl:text>&#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="indent-spaces">
+ <xsl:param name="node" select="."/>
+ <xsl:text> </xsl:text>
+ <xsl:if test="$node/parent::*">
+ <xsl:call-template name="indent-spaces">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/" priority="-1">
+ <xsl:text>&#xA;</xsl:text>
+ <toc role="chunk-toc">
+ <xsl:text>&#xA;</xsl:text>
+ <xsl:apply-templates select="/" mode="toc"/>
+ </toc>
+ <xsl:text>&#xA;</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/manifest.xsl b/docs/xsl-generic/html/manifest.xsl
new file mode 100644
index 00000000..01faaccf
--- /dev/null
+++ b/docs/xsl-generic/html/manifest.xsl
@@ -0,0 +1,22 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: manifest.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- OBSOLETE. The templates from this file were moved to -->
+<!-- chunk-common.xsl and chunk-code.xsl. -->
+<!-- ==================================================================== -->
+
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/math.xsl b/docs/xsl-generic/html/math.xsl
new file mode 100644
index 00000000..5bb4377c
--- /dev/null
+++ b/docs/xsl-generic/html/math.xsl
@@ -0,0 +1,270 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ exclude-result-prefixes="mml"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: math.xsl 6961 2007-07-07 02:05:56Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:template match="inlineequation">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="alt">
+</xsl:template>
+
+<xsl:template match="mathphrase">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<!-- "Support" for MathML -->
+
+<xsl:template match="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<!-- Support for TeX math in alt -->
+
+<xsl:template match="*" mode="collect.tex.math">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$tex.math.file"/>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="$tex.math.in.alt = 'plain'">
+ <xsl:call-template name="tex.math.plain.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.plain"/>
+ <xsl:call-template name="tex.math.plain.tail"/>
+ </xsl:when>
+ <xsl:when test="$tex.math.in.alt = 'latex'">
+ <xsl:call-template name="tex.math.latex.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.latex"/>
+ <xsl:call-template name="tex.math.latex.tail"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Unsupported TeX math notation:
+ <xsl:value-of select="$tex.math.in.alt"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$chunker.output.encoding"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- PlainTeX -->
+
+<xsl:template name="tex.math.plain.head">
+ <xsl:text>\nopagenumbers &#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.plain.tail">
+ <xsl:text>\bye &#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} &#xA;</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$ &#xA;</xsl:text>
+ </xsl:if>
+ <xsl:text>\vfill\eject &#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | mediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} &#xA;</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$ &#xA;</xsl:text>
+ </xsl:if>
+ <xsl:text>\vfill\eject &#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.plain"/>
+
+<!-- LaTeX -->
+
+<xsl:template name="tex.math.latex.head">
+ <xsl:text>\documentclass{article} &#xA;</xsl:text>
+ <xsl:text>\pagestyle{empty} &#xA;</xsl:text>
+ <xsl:text>\begin{document} &#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.latex.tail">
+ <xsl:text>\end{document} &#xA;</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} &#xA;</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$ &#xA;</xsl:text>
+ </xsl:if>
+ <xsl:text>\newpage &#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="output.delims">
+ <xsl:call-template name="tex.math.output.delims"/>
+ </xsl:variable>
+ <xsl:variable name="tex" select="alt[@role='tex'] | mediaobject/textobject[@role='tex']"/>
+ <xsl:if test="$tex">
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} &#xA;</xsl:text>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$tex"/>
+ <xsl:if test="$output.delims != 0">
+ <xsl:text>$$ &#xA;</xsl:text>
+ </xsl:if>
+ <xsl:text>\newpage &#xA;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.latex"/>
+
+<!-- Extracting image filename from mediaobject and graphic elements -->
+
+<xsl:template name="select.mediaobject.filename">
+ <xsl:param name="olist"
+ select="imageobject|imageobjectco
+ |videoobject|audioobject|textobject"/>
+
+ <xsl:variable name="mediaobject.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$mediaobject.index != ''">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object"
+ select="$olist[position() = $mediaobject.index]"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="tex.math.output.delims">
+ <xsl:variable name="pi.delims">
+ <xsl:call-template name="pi.dbtex_delims">
+ <xsl:with-param name="node" select="descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="result">
+ <xsl:choose>
+ <xsl:when test="$pi.delims = 'no'">0</xsl:when>
+ <xsl:when test="$pi.delims = '' and $tex.math.delims = 0">0</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$result"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/oldchunker.xsl b/docs/xsl-generic/html/oldchunker.xsl
new file mode 100644
index 00000000..fe6b17c3
--- /dev/null
+++ b/docs/xsl-generic/html/oldchunker.xsl
@@ -0,0 +1,202 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saxon="http://icl.com/saxon"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:redirect="http://xml.apache.org/xalan/redirect"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.1"
+ exclude-result-prefixes="doc"
+ extension-element-prefixes="saxon redirect lxslt">
+
+<!-- ********************************************************************
+ $Id: oldchunker.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- This stylesheet works with Saxon and Xalan; for XT use xtchunker.xsl -->
+
+<!-- ==================================================================== -->
+
+<xsl:param name="default.encoding" select="'ISO-8859-1'" doc:type='string'/>
+
+<doc:param name="default.encoding" xmlns="">
+<refpurpose>Encoding used in generated HTML pages</refpurpose>
+<refdescription>
+<para>This encoding is used in files generated by chunking stylesheet. Currently
+only Saxon is able to change output encoding.
+</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<xsl:param name="saxon.character.representation" select="'entity;decimal'" doc:type='string'/>
+
+<doc:param name="saxon.character.representation" xmlns="">
+<refpurpose>Saxon character representation used in generated HTML pages</refpurpose>
+<refdescription>
+<para>This character representation is used in files generated by chunking stylesheet. If
+you want to suppress entity references for characters with direct representation
+in default.encoding, set this parameter to value <literal>native</literal>.
+</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="make-relative-filename">
+ <xsl:param name="base.dir" select="'./'"/>
+ <xsl:param name="base.name" select="''"/>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan doesn't make the chunks relative -->
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Chunking isn't supported with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="method" select="'html'"/>
+ <xsl:param name="encoding" select="$default.encoding"/>
+ <xsl:param name="indent" select="'no'"/>
+ <xsl:param name="content" select="''"/>
+
+ <xsl:message>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != ''">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:message>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON 6.2')">
+ <!-- Saxon 6.2.x uses xsl:document -->
+ <xsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </xsl:document>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon uses saxon:output -->
+ <saxon:output file="{$filename}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="write.chunk.with.doctype">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="method" select="'html'"/>
+ <xsl:param name="encoding" select="$default.encoding"/>
+ <xsl:param name="indent" select="'no'"/>
+ <xsl:param name="doctype-public" select="''"/>
+ <xsl:param name="doctype-system" select="''"/>
+ <xsl:param name="content" select="''"/>
+
+ <xsl:message>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:if test="name(.) != ''">
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:if>
+ </xsl:message>
+
+ <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($vendor, 'SAXON 6.2')">
+ <!-- Saxon 6.2.x uses xsl:document -->
+ <xsl:document href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </xsl:document>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'SAXON')">
+ <!-- Saxon uses saxon:output -->
+ <saxon:output file="{$filename}"
+ href="{$filename}"
+ method="{$method}"
+ encoding="{$encoding}"
+ indent="{$indent}"
+ doctype-public="{$doctype-public}"
+ doctype-system="{$doctype-system}"
+ saxon:character-representation="{$saxon.character.representation}">
+ <xsl:copy-of select="$content"/>
+ </saxon:output>
+ </xsl:when>
+ <xsl:when test="contains($vendor, 'Apache')">
+ <!-- Xalan uses redirect -->
+ <redirect:write file="{$filename}">
+ <xsl:copy-of select="$content"/>
+ </redirect:write>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- it doesn't matter since we won't be making chunks... -->
+ <xsl:message terminate="yes">
+ <xsl:text>Can't make chunks with </xsl:text>
+ <xsl:value-of select="$vendor"/>
+ <xsl:text>'s processor.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/onechunk.xsl b/docs/xsl-generic/html/onechunk.xsl
new file mode 100644
index 00000000..527dccfd
--- /dev/null
+++ b/docs/xsl-generic/html/onechunk.xsl
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="chunk.xsl"/>
+
+<!-- Ok, using the onechunk parameter makes this all work again. -->
+<!-- It does have the disadvantage that it only works for documents that have -->
+<!-- a root element that is considered a chunk by the chunk.xsl stylesheet. -->
+<!-- Ideally, onechunk would let anything be a chunk. But not today. -->
+
+<xsl:param name="onechunk" select="1"/>
+<xsl:param name="suppress.navigation">1</xsl:param>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/param.xsl b/docs/xsl-generic/html/param.xsl
new file mode 100644
index 00000000..389068fc
--- /dev/null
+++ b/docs/xsl-generic/html/param.xsl
@@ -0,0 +1,412 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!-- This file is generated from param.xweb -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- ********************************************************************
+ $Id: param.xweb 7098 2007-07-20 14:59:23Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="admon.graphics.extension">.png</xsl:param>
+<xsl:param name="admon.graphics" select="0"/>
+<xsl:param name="admon.graphics.path">images/</xsl:param>
+<xsl:param name="admon.style">
+ <xsl:text>margin-left: 0.5in; margin-right: 0.5in;</xsl:text>
+</xsl:param>
+<xsl:param name="admon.textlabel" select="1"/>
+<xsl:param name="annotate.toc" select="1"/>
+<xsl:param name="annotation.css">
+/* ======================================================================
+ Annotations
+*/
+
+div.annotation-list { visibility: hidden;
+ }
+
+div.annotation-nocss { position: absolute;
+ visibility: hidden;
+ }
+
+div.annotation-popup { position: absolute;
+ z-index: 4;
+ visibility: hidden;
+ padding: 0px;
+ margin: 2px;
+ border-style: solid;
+ border-width: 1px;
+ width: 200px;
+ background-color: white;
+ }
+
+div.annotation-title { padding: 1px;
+ font-weight: bold;
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ color: white;
+ background-color: black;
+ }
+
+div.annotation-body { padding: 2px;
+ }
+
+div.annotation-body p { margin-top: 0px;
+ padding-top: 0px;
+ }
+
+div.annotation-close { position: absolute;
+ top: 2px;
+ right: 2px;
+ }
+</xsl:param>
+
+<xsl:param name="annotation.js">
+<xsl:text>http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js</xsl:text></xsl:param>
+
+<xsl:param name="annotation.graphic.open">http://docbook.sourceforge.net/release/images/annot-open.png</xsl:param>
+<xsl:param name="annotation.graphic.close">
+http://docbook.sourceforge.net/release/images/annot-close.png</xsl:param>
+<xsl:param name="annotation.support" select="0"/>
+<xsl:param name="appendix.autolabel">A</xsl:param>
+<xsl:param name="author.othername.in.middle" select="1"/>
+<xsl:param name="autotoc.label.separator">. </xsl:param>
+<xsl:param name="autotoc.label.in.hyperlink" select="1"/>
+<xsl:param name="base.dir"/>
+<xsl:param name="biblioentry.item.separator">. </xsl:param>
+<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param>
+
+<xsl:param name="bibliography.numbered" select="0"/>
+<xsl:param name="bibliography.style">normal</xsl:param>
+<xsl:param name="blurb.on.titlepage.enabled" select="0"/>
+<xsl:param name="bridgehead.in.toc" select="0"/>
+<xsl:param name="callout.defaultcolumn">60</xsl:param>
+<xsl:param name="callout.graphics.extension">.png</xsl:param>
+
+<xsl:param name="callout.graphics" select="1"/>
+<xsl:param name="callout.graphics.number.limit">15</xsl:param>
+
+<xsl:param name="callout.graphics.path">images/callouts/</xsl:param>
+<xsl:param name="callout.list.table" select="1"/>
+<xsl:param name="callout.unicode" select="0"/>
+<xsl:param name="callout.unicode.number.limit">10</xsl:param>
+<xsl:param name="callout.unicode.start.character">10102</xsl:param>
+<xsl:param name="callouts.extension" select="1"/>
+<xsl:param name="chapter.autolabel" select="1"/>
+<xsl:param name="chunk.append"/>
+<xsl:param name="chunk.first.sections" select="0"/>
+<xsl:param name="chunk.quietly" select="0"/>
+<xsl:param name="chunk.section.depth" select="1"/>
+<xsl:param name="chunk.toc"/>
+<xsl:param name="chunk.tocs.and.lots" select="0"/>
+<xsl:param name="chunk.tocs.and.lots.has.title" select="1"/>
+<xsl:param name="chunk.separate.lots" select="0"/>
+<xsl:param name="citerefentry.link" select="0"/>
+<xsl:param name="collect.xref.targets">no</xsl:param>
+<xsl:param name="component.label.includes.part.label" select="0"/>
+<xsl:param name="contrib.inline.enabled">1</xsl:param>
+<xsl:param name="css.decoration" select="1"/>
+<xsl:param name="current.docid"/>
+<xsl:param name="default.float.class">
+ <xsl:choose>
+ <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when>
+ <xsl:otherwise>before</xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+<xsl:param name="default.image.width"/>
+<xsl:param name="default.table.width"/>
+<xsl:param name="default.table.frame">all</xsl:param>
+<xsl:param name="draft.mode">maybe</xsl:param>
+<xsl:param name="draft.watermark.image">http://docbook.sourceforge.net/release/images/draft.png</xsl:param>
+<xsl:param name="ebnf.table.bgcolor">#F5DCB3</xsl:param>
+<xsl:param name="ebnf.table.border" select="1"/>
+<xsl:param name="ebnf.assignment">
+<code>::=</code>
+</xsl:param>
+
+<xsl:param name="ebnf.statement.terminator"/>
+
+<xsl:param name="eclipse.autolabel" select="0"/>
+<xsl:param name="eclipse.plugin.name">DocBook Online Help Sample</xsl:param>
+<xsl:param name="eclipse.plugin.id">com.example.help</xsl:param>
+<xsl:param name="eclipse.plugin.provider">Example provider</xsl:param>
+<xsl:param name="editedby.enabled">1</xsl:param>
+<xsl:param name="email.delimiters.enabled" select="1"/>
+<xsl:param name="emphasis.propagates.style" select="1"/>
+<xsl:param name="entry.propagates.style" select="1"/>
+<xsl:param name="firstterm.only.link" select="0"/>
+<xsl:param name="footer.rule" select="1"/>
+<xsl:param name="footnote.number.format">1</xsl:param>
+<xsl:param name="footnote.number.symbols"/>
+<xsl:param name="formal.procedures" select="1"/>
+<xsl:param name="formal.title.placement">
+figure before
+example before
+equation before
+table before
+procedure before
+task before
+</xsl:param>
+<xsl:param name="funcsynopsis.decoration" select="1"/>
+<xsl:param name="funcsynopsis.style">kr</xsl:param>
+<xsl:param name="funcsynopsis.tabular.threshold">40</xsl:param>
+<xsl:param name="function.parens" select="0"/>
+<xsl:param name="generate.id.attributes" select="0"/>
+<xsl:param name="generate.index" select="1"/>
+<xsl:param name="generate.legalnotice.link" select="0"/>
+<xsl:param name="generate.revhistory.link" select="0"/>
+<xsl:param name="generate.manifest" select="0"/>
+<xsl:param name="generate.meta.abstract" select="1"/>
+<xsl:param name="generate.section.toc.level" select="0"/>
+<xsl:param name="generate.toc">
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title,figure,table,example,equation
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+</xsl:param>
+
+<xsl:param name="glossary.collection"/>
+<xsl:param name="glossary.sort" select="0"/>
+<xsl:param name="glossentry.show.acronym">no</xsl:param>
+<xsl:param name="glossterm.auto.link" select="0"/>
+<xsl:param name="graphic.default.extension"/>
+<xsl:param name="graphicsize.extension" select="1"/>
+<xsl:param name="graphicsize.use.img.src.path" select="0"/>
+<xsl:param name="header.rule" select="1"/>
+<xsl:param name="highlight.default.language"/>
+<xsl:param name="highlight.source" select="0"/>
+<xsl:param name="html.append"/>
+<xsl:param name="html.base"/>
+<xsl:param name="html.cellpadding"/>
+<xsl:param name="html.cellspacing"/>
+<xsl:param name="html.cleanup" select="1"/>
+<xsl:param name="html.ext">.html</xsl:param>
+<xsl:param name="html.extra.head.links" select="0"/>
+<xsl:param name="html.head.legalnotice.link.types">copyright</xsl:param>
+<xsl:param name="html.head.legalnotice.link.multiple" select="1"/>
+<xsl:param name="html.longdesc" select="1"/>
+<xsl:param name="html.longdesc.link" select="$html.longdesc"/>
+<xsl:param name="html.stylesheet"/>
+<xsl:param name="html.stylesheet.type">text/css</xsl:param>
+<xsl:param name="htmlhelp.alias.file">alias.h</xsl:param>
+<xsl:param name="htmlhelp.autolabel" select="0"/>
+<xsl:param name="htmlhelp.button.back" select="1"/>
+<xsl:param name="htmlhelp.button.forward" select="0"/>
+<xsl:param name="htmlhelp.button.hideshow" select="1"/>
+<xsl:param name="htmlhelp.button.home" select="0"/>
+<xsl:param name="htmlhelp.button.home.url"/>
+<xsl:param name="htmlhelp.button.jump1" select="0"/>
+<xsl:param name="htmlhelp.button.jump1.title">User1</xsl:param>
+<xsl:param name="htmlhelp.button.jump1.url"/>
+<xsl:param name="htmlhelp.button.jump2" select="0"/>
+<xsl:param name="htmlhelp.button.jump2.title">User2</xsl:param>
+<xsl:param name="htmlhelp.button.jump2.url"/>
+<xsl:param name="htmlhelp.button.locate" select="0"/>
+<xsl:param name="htmlhelp.button.next" select="1"/>
+<xsl:param name="htmlhelp.button.options" select="1"/>
+<xsl:param name="htmlhelp.button.prev" select="1"/>
+<xsl:param name="htmlhelp.button.print" select="1"/>
+<xsl:param name="htmlhelp.button.refresh" select="0"/>
+<xsl:param name="htmlhelp.button.stop" select="0"/>
+<xsl:param name="htmlhelp.button.zoom" select="0"/>
+<xsl:param name="htmlhelp.chm">htmlhelp.chm</xsl:param>
+<xsl:param name="htmlhelp.default.topic"/>
+<xsl:param name="htmlhelp.display.progress" select="1"/>
+<xsl:param name="htmlhelp.encoding">iso-8859-1</xsl:param>
+<xsl:param name="htmlhelp.enhanced.decompilation" select="0"/>
+<xsl:param name="htmlhelp.enumerate.images" select="0"/>
+<xsl:param name="htmlhelp.force.map.and.alias" select="0"/>
+<xsl:param name="htmlhelp.hhc.binary" select="1"/>
+<xsl:param name="htmlhelp.hhc.folders.instead.books" select="1"/>
+<xsl:param name="htmlhelp.hhc">toc.hhc</xsl:param>
+<xsl:param name="htmlhelp.hhc.section.depth">5</xsl:param>
+<xsl:param name="htmlhelp.hhc.show.root" select="1"/>
+<xsl:param name="htmlhelp.hhc.width"/>
+<xsl:param name="htmlhelp.hhk">index.hhk</xsl:param>
+<xsl:param name="htmlhelp.hhp">htmlhelp.hhp</xsl:param>
+<xsl:param name="htmlhelp.hhp.tail"/>
+<xsl:param name="htmlhelp.hhp.window">Main</xsl:param>
+<xsl:param name="htmlhelp.hhp.windows"/>
+<xsl:param name="htmlhelp.map.file">context.h</xsl:param>
+<xsl:param name="htmlhelp.only" select="0"/>
+<xsl:param name="htmlhelp.remember.window.position" select="0"/>
+<xsl:param name="htmlhelp.show.advanced.search" select="0"/>
+<xsl:param name="htmlhelp.show.favorities" select="0"/>
+<xsl:param name="htmlhelp.show.menu" select="0"/>
+<xsl:param name="htmlhelp.show.toolbar.text" select="1"/>
+<xsl:param name="htmlhelp.title"/>
+<xsl:param name="htmlhelp.use.hhk" select="0"/>
+<xsl:param name="htmlhelp.window.geometry"/>
+<xsl:param name="img.src.path"/>
+<xsl:param name="id.warnings" select="0"/>
+<xsl:param name="index.method">basic</xsl:param>
+<xsl:param name="index.on.role" select="0"/>
+<xsl:param name="index.on.type" select="0"/>
+<xsl:param name="index.number.separator"/>
+<xsl:param name="index.term.separator"/>
+<xsl:param name="index.range.separator"/>
+<xsl:param name="index.prefer.titleabbrev" select="0"/>
+<xsl:param name="ignore.image.scaling" select="0"/>
+<xsl:param name="inherit.keywords" select="1"/>
+<xsl:param name="insert.xref.page.number">no</xsl:param>
+<xsl:param name="javahelp.encoding">iso-8859-1</xsl:param>
+<xsl:param name="keep.relative.image.uris" select="1"/>
+
+<xsl:param name="l10n.gentext.default.language">en</xsl:param>
+<xsl:param name="l10n.gentext.language"/>
+<xsl:param name="l10n.gentext.use.xref.language" select="0"/>
+<xsl:param name="l10n.lang.value.rfc.compliant" select="1"/>
+<xsl:param name="label.from.part" select="0"/>
+<xsl:param name="linenumbering.everyNth">5</xsl:param>
+<xsl:param name="linenumbering.extension" select="1"/>
+<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="linenumbering.width">3</xsl:param>
+<xsl:param name="link.mailto.url"/>
+<xsl:param name="make.graphic.viewport" select="1"/>
+<xsl:param name="make.single.year.ranges" select="0"/>
+<xsl:param name="make.valid.html" select="0"/>
+<xsl:param name="make.year.ranges" select="0"/>
+ <xsl:param name="manifest">HTML.manifest</xsl:param>
+
+<xsl:param name="manifest.in.base.dir" select="0"/>
+<xsl:param name="manual.toc"/>
+<xsl:param name="menuchoice.menu.separator"> &#8594; </xsl:param>
+<xsl:param name="menuchoice.separator">+</xsl:param>
+<xsl:param name="navig.graphics.extension">.gif</xsl:param>
+<xsl:param name="navig.graphics" select="0"/>
+<xsl:param name="navig.graphics.path">images/</xsl:param>
+<xsl:param name="navig.showtitles">1</xsl:param>
+<xsl:param name="nominal.image.depth" select="4 * $pixels.per.inch"/>
+<xsl:param name="nominal.image.width" select="6 * $pixels.per.inch"/>
+<xsl:param name="nominal.table.width">6in</xsl:param>
+<xsl:param name="olink.base.uri"/>
+<xsl:param name="olink.debug" select="0"/>
+<xsl:attribute-set name="olink.properties">
+ <xsl:attribute name="show-destination">replace</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="insert.olink.page.number">no</xsl:param>
+<xsl:param name="insert.olink.pdf.frag" select="0"/>
+<xsl:param name="prefer.internal.olink" select="0"/>
+<xsl:param name="olink.lang.fallback.sequence"/>
+<xsl:param name="olink.doctitle">no</xsl:param>
+<xsl:param name="olink.fragid">fragid=</xsl:param>
+<xsl:param name="olink.outline.ext">.olink</xsl:param>
+<xsl:param name="olink.pubid">pubid</xsl:param>
+ <xsl:param name="olink.resolver">/cgi-bin/olink</xsl:param>
+<xsl:param name="olink.sysid">sysid</xsl:param>
+<xsl:param name="abstract.notitle.enabled" select="0"/>
+<xsl:param name="othercredit.like.author.enabled">0</xsl:param>
+<xsl:param name="para.propagates.style" select="1"/>
+<xsl:param name="part.autolabel">I</xsl:param>
+<xsl:param name="phrase.propagates.style" select="1"/>
+<xsl:param name="pixels.per.inch">90</xsl:param>
+<xsl:param name="points.per.em">10</xsl:param>
+<xsl:param name="preface.autolabel" select="0"/>
+<xsl:param name="preferred.mediaobject.role"/>
+<xsl:param name="process.empty.source.toc" select="0"/>
+<xsl:param name="process.source.toc" select="0"/>
+<xsl:param name="profile.arch"/>
+<xsl:param name="profile.audience"/>
+<xsl:param name="profile.attribute"/>
+<xsl:param name="profile.condition"/>
+<xsl:param name="profile.conformance"/>
+<xsl:param name="profile.lang"/>
+<xsl:param name="profile.os"/>
+<xsl:param name="profile.revision"/>
+<xsl:param name="profile.revisionflag"/>
+<xsl:param name="profile.role"/>
+<xsl:param name="profile.security"/>
+<xsl:param name="profile.separator">;</xsl:param>
+<xsl:param name="profile.status"/>
+<xsl:param name="profile.userlevel"/>
+<xsl:param name="profile.value"/>
+<xsl:param name="profile.vendor"/>
+<xsl:param name="profile.wordsize"/>
+<xsl:param name="punct.honorific">.</xsl:param>
+<xsl:param name="qanda.defaultlabel">number</xsl:param>
+<xsl:param name="qanda.inherit.numeration" select="1"/>
+<xsl:param name="qanda.in.toc" select="0"/>
+<xsl:param name="qanda.nested.in.toc" select="0"/>
+<xsl:param name="qandadiv.autolabel" select="1"/>
+<xsl:param name="refentry.generate.name" select="1"/>
+<xsl:param name="refentry.generate.title" select="0"/>
+<xsl:param name="refentry.separator" select="1"/>
+<xsl:param name="refentry.xref.manvolnum" select="1"/>
+ <xsl:param name="reference.autolabel">I</xsl:param>
+<xsl:param name="refclass.suppress" select="0"/>
+<xsl:param name="root.filename">index</xsl:param>
+<xsl:param name="rootid"/>
+<xsl:param name="runinhead.default.title.end.punct">.</xsl:param>
+<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param>
+<xsl:param name="section.autolabel" select="0"/>
+<xsl:param name="section.autolabel.max.depth">8</xsl:param>
+<xsl:param name="section.label.includes.component.label" select="0"/>
+<xsl:param name="segmentedlist.as.table" select="0"/>
+<xsl:param name="shade.verbatim" select="0"/>
+<xsl:attribute-set name="shade.verbatim.style">
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="bgcolor">#E0E0E0</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:param name="show.comments" select="1"/>
+<xsl:param name="show.revisionflag" select="0"/>
+<xsl:param name="simplesect.in.toc" select="0"/>
+<xsl:param name="spacing.paras" select="0"/>
+<xsl:param name="suppress.footer.navigation">0</xsl:param>
+<xsl:param name="suppress.header.navigation" select="0"/>
+<xsl:param name="suppress.navigation" select="0"/>
+<xsl:param name="table.borders.with.css" select="0"/>
+<xsl:param name="table.cell.border.color"/>
+
+<xsl:param name="table.cell.border.style">solid</xsl:param>
+<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param>
+<xsl:param name="table.footnote.number.format">a</xsl:param>
+<xsl:param name="table.footnote.number.symbols"/>
+<xsl:param name="table.frame.border.color"/>
+
+<xsl:param name="table.frame.border.style">solid</xsl:param>
+<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param>
+<xsl:param name="tablecolumns.extension" select="1"/>
+ <xsl:param name="target.database.document">olinkdb.xml</xsl:param>
+<xsl:param name="targets.filename">target.db</xsl:param>
+<xsl:param name="textdata.default.encoding"/>
+<xsl:param name="tex.math.delims" select="1"/>
+<xsl:param name="tex.math.file">tex-math-equations.tex</xsl:param>
+<xsl:param name="tex.math.in.alt"/>
+ <xsl:param name="textinsert.extension" select="1"/>
+<xsl:param name="toc.list.type">dl</xsl:param>
+<xsl:param name="toc.section.depth">2</xsl:param>
+<xsl:param name="toc.max.depth">8</xsl:param>
+<xsl:param name="ulink.target">_top</xsl:param>
+<xsl:param name="use.embed.for.svg" select="0"/>
+<xsl:param name="use.extensions" select="0"/>
+<xsl:param name="use.id.as.filename" select="0"/>
+<xsl:param name="use.local.olink.style" select="0"/>
+<xsl:param name="use.role.as.xrefstyle" select="1"/>
+<xsl:param name="use.role.for.mediaobject" select="1"/>
+<xsl:param name="use.svg" select="1"/>
+<xsl:param name="variablelist.as.table" select="0"/>
+<xsl:param name="variablelist.term.separator">, </xsl:param>
+<xsl:param name="variablelist.term.break.after">0</xsl:param>
+<xsl:param name="xref.with.number.and.title" select="1"/>
+<xsl:param name="xref.label-title.separator">: </xsl:param>
+<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param>
+<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/pi.xsl b/docs/xsl-generic/html/pi.xsl
new file mode 100644
index 00000000..44e323b4
--- /dev/null
+++ b/docs/xsl-generic/html/pi.xsl
@@ -0,0 +1,1240 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: pi.xsl 7250 2007-08-18 10:19:00Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<doc:reference xmlns=""><info><title>HTML Processing Instruction Reference</title>
+ <releaseinfo role="meta">
+ $Id: pi.xsl 7250 2007-08-18 10:19:00Z xmldoc $
+ </releaseinfo>
+ </info>
+ <partintro xml:id="partintro">
+ <title>Introduction</title>
+ <para>This is generated reference documentation for all
+ user-specifiable processing instructions (PIs) in the DocBook
+ XSL stylesheets for HTML output.
+ <note>
+ <para>You add these PIs at particular points in a document to
+ cause specific “exceptions” to formatting/output behavior. To
+ make global changes in formatting/output behavior across an
+ entire document, it’s better to do it by setting an
+ appropriate stylesheet parameter (if there is one).</para>
+ </note>
+ </para>
+ </partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<doc:pi name="dbhtml_background-color" xmlns="">
+ <refpurpose>Sets background color for an image</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml background-color</tag> PI before or
+ after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+ <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+ sibling to the element, to set a background color for the
+ image.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml background-color="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="BGcolor.html"
+ >Background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_background-color">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'background-color'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_bgcolor" xmlns="">
+ <refpurpose>Sets background color on a table row or table cell</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml bgcolor</tag> PI as child of a table row
+ or cell to set a background color for that table row or cell.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+ <listitem>
+ <para>An HTML color value</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="BGtableColor.html#CellBGColor"
+ >Cell background color</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_bgcolor">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'bgcolor'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_cellpadding" xmlns="">
+ <refpurpose>Specifies cellpadding in table or qandaset output</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml cellpadding</tag> PI as a child of a
+ <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellpadding</literal> attribute in the
+ output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml cellpadding="<replaceable>number</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>cellpadding="<replaceable>number</replaceable>"</term>
+ <listitem>
+ <para>Specifies the cellpadding</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>html.cellpadding</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="CellSpacing.html"
+ >Cell spacing and cell padding</link>,
+ <link role="tcg" xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_cellpadding">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'cellpadding'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_cellspacing" xmlns="">
+ <refpurpose>Specifies cellspacing in table or qandaset output</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml cellspacing</tag> PI as a child of a
+ <tag>table</tag> or <tag>qandaset</tag> to specify the value
+ for the HTML <literal>cellspacing</literal> attribute in the
+ output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml cellspacing="<replaceable>number</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>cellspacing="<replaceable>number</replaceable>"</term>
+ <listitem>
+ <para>Specifies the cellspacing</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>html.cellspacing</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="CellSpacing.html"
+ >Cell spacing and cell padding</link>,
+ <link role="tcg"
+ xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_cellspacing">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'cellspacing'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_class" xmlns="">
+ <refpurpose>Set value of the class attribute for a table row</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml class</tag> PI as a child of a
+ <tag>row</tag> to specify a <literal>class</literal>
+ attribute and value in the HTML output for that row.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml class="<replaceable>name</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>class="<replaceable>name</replaceable>"</term>
+ <listitem>
+ <para>Specifies the class name</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="CSSTableCells.html"
+ >Table styles in HTML output</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_class">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'class'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_dir" xmlns="">
+ <refpurpose>Specifies a directory name in which to write files</refpurpose>
+ <refdescription>
+ <para>When chunking output, use the <tag class="xmlpi">dbhtml dir</tag> PI
+ as a child of a chunk source to cause the output of that
+ chunk to be written to the specified directory; also, use it
+ as a child of a <tag>mediaobject</tag> to specify a
+ directory into which any long-description files for that
+ <tag>mediaobject</tag> will be written.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml dir="<replaceable>path</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>dir="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the pathname for the directory</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>base.dir</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Chunking.html#dbhtmlDirPI"
+ >dbhtml dir processing instruction</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_dir">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'dir'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_filename" xmlns="">
+ <refpurpose>Specifies a filename for a chunk</refpurpose>
+ <refdescription>
+ <para>When chunking output, use the <tag class="xmlpi">dbhtml filename</tag>
+ PI as a child of a chunk source to specify a filename for
+ the output file for that chunk.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml filename="<replaceable>filename</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>filename="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the filename for the file</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>use.id.as.filename</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Chunking.html#DbhtmlFilenames"
+ >dbhtml filenames</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_filename">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'filename'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_funcsynopsis-style" xmlns="">
+ <refpurpose>Specifies presentation style for a funcsynopsis</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml funcsynopsis-style</tag> PI as a child of
+ a <tag>funcprototype</tag> or anywhere within a funcprototype
+ control the presentation style for the <tag>funcsynopsis</tag>
+ in output.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml funcsynopsis-style="kr"|"ansi"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>funcsynopsis-style="kr"</term>
+ <listitem>
+ <para>Displays the <tag>funcprototype</tag> in K&amp;R style</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>funcsynopsis-style="ansi"</term>
+ <listitem>
+ <para>Displays the <tag>funcprototype</tag> in ANSI style</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>funcsynopsis.style</parameter></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'funcsynopsis-style'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_img.src.path" xmlns="">
+ <refpurpose>Specifies a path to the location of an image file</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml img.src.path</tag> PI before or
+ after an image (<tag>graphic</tag>,
+ <tag>inlinegraphic</tag>, <tag>imagedata</tag>, or
+ <tag>videodata</tag> element) as a sibling to the element,
+ to specify a path to the location of the image; in HTML
+ output, the value specified for the
+ <code>img.src.path</code> attribute is prepended to the
+ filename.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml img.src.path="<replaceable>path</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>img.src.path="<replaceable>path</replaceable>"</term>
+ <listitem>
+ <para>Specifies the pathname to prepend to the name of the image file</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>img.src.path</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="GraphicsLocations.html#UsingFileref"
+ >Using fileref</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_img.src.path">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'img.src.path'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_label-width" xmlns="">
+ <refpurpose>Specifies the label width for a qandaset</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml label-width</tag> PI as a child of a
+ <tag>qandaset</tag> to specify the width of labels.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml label-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the label width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_label-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'label-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_linenumbering.everyNth" xmlns="">
+ <refpurpose>Specifies interval for lines numbers in verbatims</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.everyNth</tag> PI as a child
+ of a “verbatim” element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the interval at which lines are numbered.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+ <listitem>
+ <para>Specifies numbering interval; a number is output
+ before every <replaceable>N</replaceable>th line</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>linenumbering.everyNth</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="AnnotateListing.html#LineNumbering"
+ >Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.everyNth">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.everyNth'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_linenumbering.separator" xmlns="">
+ <refpurpose>Specifies separator text for line numbers in verbatims</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.separator</tag> PI as a child
+ of a “verbatim” element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the separator text output between the line numbers and content.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>linenumbering.separator</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="AnnotateListing.html#LineNumbering"
+ >Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.separator">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.separator'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_linenumbering.width" xmlns="">
+ <refpurpose>Specifies width for line numbers in verbatims</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml linenumbering.width</tag> PI as a child
+ of a “verbatim” element – <tag>programlisting</tag>,
+ <tag>screen</tag>, <tag>synopsis</tag> — to specify
+ the width set aside for line numbers.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the width (inluding units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>linenumbering.width</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="AnnotateListing.html#LineNumbering"
+ >Line numbering</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_linenumbering.width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'linenumbering.width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_list-presentation" xmlns="">
+ <refpurpose>Specifies presentation style for a variablelist or
+ segmentedlist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml list-presentation</tag> PI as a child of
+ a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+ control the presentation style for the list (to cause it, for
+ example, to be displayed as a table).</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml list-presentation="list"|"table"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>list-presentation="list"</term>
+ <listitem>
+ <para>Displays the list as a list</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>list-presentation="table"</term>
+ <listitem>
+ <para>Displays the list as a table</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <itemizedlist>
+ <listitem>
+ <para><parameter>variablelist.as.table</parameter></para>
+ </listitem>
+ <listitem>
+ <para><parameter>segmentedlist.as.table</parameter></para>
+ </listitem>
+ </itemizedlist>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_list-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'list-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_list-width" xmlns="">
+ <refpurpose>Specifies the width of a variablelist or simplelist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml list-width</tag> PI as a child of a
+ <tag>variablelist</tag> or a <tag>simplelist</tag> presented
+ as a table, to specify the output width.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml list-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the output width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_list-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'list-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_row-height" xmlns="">
+ <refpurpose>Specifies the height for a table row</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml row-height</tag> PI as a child of a
+ <tag>row</tag> to specify the height of the row.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml row-height="<replaceable>height</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>row-height="<replaceable>height</replaceable>"</term>
+ <listitem>
+ <para>Specifies the label height (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="RowHeight.html"
+ >Row height</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_row-height">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'row-height'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_start" xmlns="">
+ <refpurpose>(obsolete) Sets the starting number on an ordered list</refpurpose>
+ <refdescription>
+ <para><emphasis>This PI is obsolete</emphasis>. The intent of
+ this PI was to provide a means for setting a specific starting
+ number for an ordered list. Instead of this PI, set a value
+ for the <literal>override</literal> attribute on the first
+ <tag>listitem</tag> in the list; that will have the same
+ effect as what this PI was intended for.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml start="<replaceable>character</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>start="<replaceable>character</replaceable>"</term>
+ <listitem>
+ <para>Specifies the character to use as the starting
+ number; use 0-9, a-z, A-Z, or lowercase or uppercase
+ Roman numerals</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Orderedlists.html#ListStartNum"
+ >List starting number</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_start">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'start'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_table-summary" xmlns="">
+ <refpurpose>Specifies summary for table, variablelist, segmentedlist, or qandaset output</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml table-summary</tag> PI as a child of
+ a <tag>table</tag>, <tag>variablelist</tag>,
+ <tag>segmentedlist</tag>, or <tag>qandaset</tag> to specify
+ the text for the HTML <literal>summary</literal> attribute
+ in the output HTML table.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml table-summary="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>table-summary="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the summary text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link>,
+ <link role="tcg" xlink:href="TableSummary.html"
+ >Table summary text</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_table-summary">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'table-summary'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_table-width" xmlns="">
+ <refpurpose>Specifies the width for a table</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml table-width</tag> PI as a child of a
+ <tag>table</tag> to specify the width of the table in
+ output.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml table-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the table width (including units or as a percentage)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>default.table.width</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Tables.html#TableWidth"
+ >Table width</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_table-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'table-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_term-presentation" xmlns="">
+ <refpurpose>Sets character formatting for terms in a variablelist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml term-presentation</tag> PI as a child
+ of a <tag>variablelist</tag> to set character formatting for
+ the <tag>term</tag> output of the list.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml term-presentation="bold"|"italic"|"bold-italic"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>term-presentation="<replaceable>bold</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in bold</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>italic</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in italic</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>term-presentation="<replaceable>bold-italic</replaceable>"</term>
+ <listitem>
+ <para>Specifies that terms are displayed in bold-italic</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-presentation">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-presentation'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_term-separator" xmlns="">
+ <refpurpose>Specifies separator text among terms in a varlistentry</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml term-separator</tag> PI as a child
+ of a <tag>variablelist</tag> to specify the separator text
+ among <tag>term</tag> instances.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml term-separator="<replaceable>text</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>term-separator="<replaceable>text</replaceable>"</term>
+ <listitem>
+ <para>Specifies the text (zero or more characters)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>variablelist.term.separator</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-separator">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-separator'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_term-width" xmlns="">
+ <refpurpose>Specifies the term width for a variablelist</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml term-width</tag> PI as a child of a
+ <tag>variablelist</tag> to specify the width for
+ <tag>term</tag> output.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml term-width="<replaceable>width</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+ <listitem>
+ <para>Specifies the term width (including units)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="Variablelists.html#VarListFormatting"
+ >Variable list formatting in HTML</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_term-width">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'term-width'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbhtml_toc" xmlns="">
+ <refpurpose>Specifies whether a TOC should be generated for a qandaset</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml toc</tag> PI as a child of a
+ <tag>qandaset</tag> to specify whether a table of contents
+ (TOC) is generated for the <tag>qandaset</tag>.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml toc="0"|"1"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>toc="0"</term>
+ <listitem>
+ <para>If zero, no TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>toc="1"</term>
+ <listitem>
+ <para>If <code>1</code> (or any non-zero value),
+ a TOC is generated</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="QandAtoc.html"
+ >Q and A list of questions</link>,
+ <link role="tcg"
+ xlink:href="QandAformat.html"
+ >Q and A formatting</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml_toc">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="$node/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'toc'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbcmdlist" xmlns="">
+ <refpurpose>Generates a hyperlinked list of commands</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbcmdlist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>cmdsynopsis</tag> instances; a hyperlinked navigational
+ “command list” will be generated at the top of output for that
+ element, enabling users to quickly jump
+ to each command synopsis.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbcmdlist</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <para>[No parameters]</para>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbcmdlist">
+ <xsl:variable name="cmdsynopses" select="..//cmdsynopsis"/>
+ <xsl:if test="count($cmdsynopses)&lt;1">
+ <xsl:message><xsl:text>No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep?</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <dl>
+ <xsl:call-template name="process.cmdsynopsis.list">
+ <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+ </xsl:call-template>
+ </dl>
+</xsl:template>
+
+<doc:pi name="dbfunclist" xmlns="">
+ <refpurpose>Generates a hyperlinked list of functions</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbfunclist</tag> PI as the child of any
+ element (for example, <tag>refsynopsisdiv</tag>) containing multiple
+ <tag>funcsynopsis</tag> instances; a hyperlinked
+ navigational “function list” will be generated at the top of
+ output for that element, enabling users to quickly
+ jump to to each function synopsis.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbfunclist</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <para>[No parameters]</para>
+ </refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfunclist">
+ <xsl:variable name="funcsynopses" select="..//funcsynopsis"/>
+ <xsl:if test="count($funcsynopses)&lt;1">
+ <xsl:message><xsl:text>No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep?</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <dl>
+ <xsl:call-template name="process.funcsynopsis.list">
+ <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+ </xsl:call-template>
+ </dl>
+</xsl:template>
+
+<doc:pi name="dbhtml-include_href" xmlns="">
+ <refpurpose>Copies an external well-formed HTML/XML file into current doc</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhtml-include href</tag> PI anywhere in a
+ document to cause the contents of the file referenced by the
+ <code>href</code> pseudo-attribute to be copied/inserted “as
+ is” into your HTML output at the point in document order
+ where the PI occurs in the source.</para>
+ <note>
+ <para>The referenced file may contain plain text (as long as
+ it is “wrapped” in an <tag>html</tag> element — see the
+ note below) or markup in any arbitrary vocabulary,
+ including HTML — but it must conform to XML
+ well-formedness constraints (because the feature in XSLT
+ 1.0 for opening external files, the
+ <function>document()</function> function, can only handle
+ files that meet XML well-formedness constraints).</para>
+ <para>Among other things, XML well-formedness constraints
+ require a document to have <emphasis>a single root
+ element</emphasis>. So if the content you want to
+ include is plain text or is markup that does
+ <emphasis>not</emphasis> have a single root element,
+ <emphasis role="strong">wrap the content in an
+ <tag>html</tag> element</emphasis>. The stylesheets will
+ strip out that surrounding <tag>html</tag> “wrapper” when
+ they find it, leaving just the content you want to
+ insert.</para>
+ </note>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhtml-include href="<replaceable>URI</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>href="<replaceable>URI</replaceable>"</term>
+ <listitem>
+ <para>Specifies the URI for the file to include; the URI
+ can be, for example, a remote <literal>http:</literal>
+ URI, or a local filesystem <literal>file:</literal>
+ URI</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="params">
+ <para><parameter>textinsert.extension</parameter></para>
+ </refsee>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="InsertExtHtml.html"
+ >Inserting external HTML code</link>,
+ <link
+ xlink:href="ExternalCode.html"
+ >External code files</link></para>
+ </refsee>
+</doc:pi>
+<xsl:template name="pi.dbhtml-include">
+ <xsl:param name="href">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="."/>
+ <xsl:with-param name="attribute">href</xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <xsl:variable name="content" select="document($href,/)"/>
+ <xsl:choose>
+ <xsl:when test="$content/*">
+ <xsl:choose>
+ <xsl:when test="$content/*[1][self::html]">
+ <!-- include just the children of html wrapper -->
+ <xsl:copy-of select="$content/*[1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: dbhtml-include processing instruction </xsl:text>
+ <xsl:text>href has no content.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: dbhtml-include processing instruction has </xsl:text>
+ <xsl:text>missing or empty href value.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-attribute">
+ <!-- * dbhtml-attribute is an interal utility template for retrieving -->
+ <!-- * pseudo-attributes/parameters from PIs -->
+ <xsl:param name="pis" select="processing-instruction('dbhtml')"/>
+ <xsl:param name="attribute">filename</xsl:param>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$pis"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction()">
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbcmdlist')">
+ <xsl:call-template name="pi.dbcmdlist"/>
+</xsl:template>
+<xsl:template name="process.cmdsynopsis.list">
+ <xsl:param name="cmdsynopses"/><!-- empty node list by default -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($cmdsynopses)"></xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="cmdsyn" select="$cmdsynopses[$count]"/>
+
+ <dt>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$cmdsyn/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </dt>
+
+ <xsl:call-template name="process.cmdsynopsis.list">
+ <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbfunclist')">
+ <xsl:call-template name="pi.dbfunclist"/>
+</xsl:template>
+<xsl:template name="process.funcsynopsis.list">
+ <xsl:param name="funcsynopses"/><!-- empty node list by default -->
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($funcsynopses)"></xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="cmdsyn" select="$funcsynopses[$count]"/>
+
+ <dt>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$cmdsyn/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+ <xsl:with-param name="target" select="$cmdsyn"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </dt>
+
+ <xsl:call-template name="process.funcsynopsis.list">
+ <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbhtml-include')">
+ <xsl:call-template name="pi.dbhtml-include"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-dir">
+ <xsl:param name="context" select="."/>
+ <!-- directories are now inherited from previous levels -->
+ <xsl:variable name="ppath">
+ <xsl:if test="$context/parent::*">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select="$context/parent::*"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="path">
+ <xsl:call-template name="pi.dbhtml_dir">
+ <xsl:with-param name="node" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$path = ''">
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$ppath != ''">
+ <xsl:value-of select="$ppath"/>
+ <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="$path"/>
+ <xsl:text>/</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- There are two templates matching this PI in htmlhelp-common.xsl -->
+<doc:pi name="dbhh" xmlns="">
+ <refpurpose>Sets topic name and topic id for context-sensitive HTML Help</refpurpose>
+ <refdescription>
+ <para>Use the <tag class="xmlpi">dbhh</tag> PI as a child of components
+ that should be used as targets for context-sensitive help requests.</para>
+ </refdescription>
+ <refsynopsisdiv>
+ <synopsis><tag class="xmlpi">dbhh topicname="<replaceable>name</replaceable>" topicid="<replaceable>id</replaceable>"</tag></synopsis>
+ </refsynopsisdiv>
+ <refparameter>
+ <variablelist>
+ <varlistentry><term>topicname="<replaceable>name</replaceable>"</term>
+ <listitem>
+ <para>Specifies a unique string constant that identifies a help topic</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term>topicid="<replaceable>id</replaceable>"</term>
+ <listitem>
+ <para>Specifies a unique integer value for the <literal>topicname</literal> string</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refsee role="tcg">
+ <para><link role="tcg"
+ xlink:href="HtmlHelp.html#HHContextHelp"
+ >Context-sensitive help</link></para>
+ </refsee>
+</doc:pi>
+
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/profile-chunk-code.xsl b/docs/xsl-generic/html/profile-chunk-code.xsl
new file mode 100644
index 00000000..364bcc95
--- /dev/null
+++ b/docs/xsl-generic/html/profile-chunk-code.xsl
@@ -0,0 +1,609 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="exsl cf ng db exslt" version="1.0">
+
+<!-- ********************************************************************
+ $Id: chunk-code.xsl 6942 2007-07-04 04:42:17Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="chunk-filename">
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="fn">
+ <xsl:apply-templates select="." mode="recursive-chunk-filename"/>
+ </xsl:variable>
+
+ <!--
+ <xsl:message>
+ <xsl:value-of select="$ischunk"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>) </xsl:text>
+ <xsl:value-of select="$fn"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:message>
+ -->
+
+ <!-- 2003-11-25 by ndw:
+ The following test used to read test="$ischunk != 0 and $fn != ''"
+ I've removed the ischunk part of the test so that href.to.uri and
+ href.from.uri will be fully qualified even if the source or target
+ isn't a chunk. I *think* that if $fn != '' then it's appropriate
+ to put the directory on the front, even if the element isn't a
+ chunk. I could be wrong. -->
+
+ <xsl:if test="$fn != ''">
+ <xsl:call-template name="dbhtml-dir"/>
+ </xsl:if>
+
+ <xsl:value-of select="$fn"/>
+ <!-- You can't add the html.ext here because dbhtml filename= may already -->
+ <!-- have added it. It really does have to be handled in the recursive template -->
+</xsl:template>
+
+<xsl:template match="*" mode="recursive-chunk-filename">
+ <xsl:param name="recursive" select="false()"/>
+
+ <!-- returns the filename of a chunk -->
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <!-- if this is the root element, use the root.filename -->
+ <xsl:when test="not(parent::*) and $root.filename != ''">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <!-- Special case -->
+ <xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)">
+ <xsl:choose>
+ <xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)">
+ <!-- * if this legalnotice has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" too it) -->
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, if this legalnotice does not have an ID, -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend an -->
+ <!-- * "ln-" to it, and use that as the basename for the file -->
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- if there's no dbhtml filename, and if we're to use IDs as -->
+ <!-- filenames, then use the ID to generate the filename. -->
+ <xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$ischunk='0'">
+ <!-- if called on something that isn't a chunk, walk up... -->
+ <xsl:choose>
+ <xsl:when test="count(parent::*)&gt;0">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="$recursive"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <!-- unless there is no up, in which case return "" -->
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="not($recursive) and $filename != ''">
+ <!-- if this chunk has an explicit name, use it -->
+ <xsl:value-of select="$filename"/>
+ </xsl:when>
+
+ <xsl:when test="self::set">
+ <xsl:value-of select="$root.filename"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::book">
+ <xsl:text>bk</xsl:text>
+ <xsl:number level="any" format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::article">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ar</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::preface">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>pr</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::chapter">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ch</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::appendix">
+ <xsl:if test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:text>ap</xsl:text>
+ <xsl:number level="any" format="a" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::part">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>pt</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::reference">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>rn</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::refentry">
+ <xsl:choose>
+ <xsl:when test="parent::reference">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>re</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::colophon">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>co</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::sect1 or self::sect2 or self::sect3 or self::sect4 or self::sect5 or self::section">
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:text>s</xsl:text>
+ <xsl:number format="01"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::bibliography">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>bi</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::glossary">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>go</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::index">
+ <xsl:choose>
+ <xsl:when test="/set">
+ <!-- in a set, make sure we inherit the right book info... -->
+ <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+ <xsl:with-param name="recursive" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text>ix</xsl:text>
+ <xsl:number level="any" format="01" from="book"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="self::setindex">
+ <xsl:text>si</xsl:text>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>chunk-filename-error-</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:number level="any" format="01" from="set"/>
+ <xsl:if test="not($recursive)">
+ <xsl:value-of select="$html.ext"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+
+<xsl:template match="processing-instruction('dbhtml')">
+ <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+
+<xsl:template match="*" mode="find.chunks">
+ <xsl:variable name="chunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$chunk != 0">
+ <cf:div id="{generate-id()}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </cf:div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="find.chunks"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="false()"/>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="key('id',$rootid)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.tex.math"/>
+ </xsl:if>
+ <xsl:if test="$generate.manifest != 0">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="node" select="$profiled-nodes"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon">
+ <xsl:choose>
+ <xsl:when test="$onechunk != 0 and parent::*">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section">
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not(parent::*)">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:when>
+ <xsl:when test="$ischunk = 0">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="setindex |book/index |article/index |part/index">
+ <!-- some implementations use completely empty index tags to indicate -->
+ <!-- where an automatically generated index should be inserted. so -->
+ <!-- if the index is completely empty, skip it. -->
+ <xsl:if test="count(*)&gt;0 or $generate.index != '0'">
+ <xsl:call-template name="process-chunk-element"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Resolve xml:base attributes -->
+<xsl:template match="@fileref">
+ <!-- need a check for absolute urls -->
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <!-- it has a uri scheme so it is an absolute uri -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$keep.relative.image.uris != 0">
+ <!-- leave it alone -->
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- its a relative uri -->
+ <xsl:call-template name="relative-uri">
+ <xsl:with-param name="destdir">
+ <xsl:call-template name="dbhtml-dir">
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template match="set|book|part|preface|chapter|appendix |article |reference|refentry |sect1|sect2|sect3|sect4|sect5 |section |book/glossary|article/glossary|part/glossary |book/bibliography|article/bibliography|part/bibliography |colophon" mode="enumerate-files">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+</xsl:template>
+
+<xsl:template match="book/index|article/index|part/index" mode="enumerate-files">
+ <xsl:if test="$htmlhelp.output != 1">
+ <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
+ <xsl:if test="$ischunk='1'">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*" mode="enumerate-files"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="enumerate-files">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:if test="$generate.legalnotice.link != 0">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir">
+ <xsl:if test="$manifest.in.base.dir = 0">
+ <xsl:value-of select="$base.dir"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="base.name">
+ <xsl:apply-templates mode="chunk-filename" select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="mediaobject[imageobject] | inlinemediaobject[imageobject]" mode="enumerate-files">
+ <xsl:variable name="longdesc.uri">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="mediaobject" select="."/>
+
+ <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]">
+ <xsl:call-template name="longdesc.uri">
+ <xsl:with-param name="mediaobject" select="$mediaobject"/>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="enumerate-files">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/profile-chunk.xsl b/docs/xsl-generic/html/profile-chunk.xsl
new file mode 100644
index 00000000..02920b12
--- /dev/null
+++ b/docs/xsl-generic/html/profile-chunk.xsl
@@ -0,0 +1,52 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ version="1.0"
+ exclude-result-prefixes="exsl">
+
+<!-- ********************************************************************
+ $Id: profile-chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- First import the non-chunking templates that format elements
+ within each chunk file. In a customization, you should
+ create a separate non-chunking customization layer such
+ as mydocbook.xsl that imports the original docbook.xsl and
+ customizes any presentation templates. Then your chunking
+ customization should import mydocbook.xsl instead of
+ docbook.xsl. -->
+<xsl:import href="docbook.xsl"/>
+
+<!-- chunk-common.xsl contains all the named templates for chunking.
+ In a customization file, you import chunk-common.xsl, then
+ add any customized chunking templates of the same name.
+ They will have import precedence over the original
+ chunking templates in chunk-common.xsl. -->
+<xsl:import href="chunk-common.xsl"/>
+
+<!-- The manifest.xsl module is no longer imported because its
+ templates were moved into chunk-common and chunk-code -->
+
+<!-- chunk-code.xsl contains all the chunking templates that use
+ a match attribute. In a customization it should be referenced
+ using <xsl:include> instead of <xsl:import>, and then add
+ any customized chunking templates with match attributes. But be sure
+ to add a priority="1" to such customized templates to resolve
+ its conflict with the original, since they have the
+ same import precedence.
+
+ Using xsl:include prevents adding another layer
+ of import precedence, which would cause any
+ customizations that use xsl:apply-imports to wrongly
+ apply the chunking version instead of the original
+ non-chunking version to format an element. -->
+<xsl:include href="profile-chunk-code.xsl"/>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/profile-docbook.xsl b/docs/xsl-generic/html/profile-docbook.xsl
new file mode 100644
index 00000000..e680eede
--- /dev/null
+++ b/docs/xsl-generic/html/profile-docbook.xsl
@@ -0,0 +1,411 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="db ng exsl exslt" version="1.0">
+
+<xsl:output method="html" encoding="ISO-8859-1" indent="no"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 7156 2007-07-26 21:42:04Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:include href="../VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="html.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="chunker.xsl"/>
+<xsl:include href="html-rtf.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'html'"/>
+<xsl:param name="htmlhelp.output" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+<xsl:key name="gid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <span style="color: red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="text()">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template name="body.attributes">
+ <xsl:attribute name="bgcolor">white</xsl:attribute>
+ <xsl:attribute name="text">black</xsl:attribute>
+ <xsl:attribute name="link">#0000FF</xsl:attribute>
+ <xsl:attribute name="vlink">#840084</xsl:attribute>
+ <xsl:attribute name="alink">#0000FF</xsl:attribute>
+</xsl:template>
+
+<xsl:template name="head.content">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$link.mailto.url != ''">
+ <link rev="made" href="{$link.mailto.url}"/>
+ </xsl:if>
+
+ <xsl:if test="$html.base != ''">
+ <base href="{$html.base}"/>
+ </xsl:if>
+
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+
+ <xsl:if test="$generate.meta.abstract != 0">
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="head.keywords.content"/>
+</xsl:template>
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <link rel="stylesheet" href="{substring-before($stylesheets, ' ')}">
+ <xsl:if test="$html.stylesheet.type != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$html.stylesheet.type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <link rel="stylesheet" href="{$stylesheets}">
+ <xsl:if test="$html.stylesheet.type != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$html.stylesheet.type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="head.keywords.content">
+ <xsl:apply-templates select="chapterinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="appendixinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="prefaceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bookinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="setinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="articleinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="artheader/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect4info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect5info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sectioninfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bibliographyinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="glossaryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="indexinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refentryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="partinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="referenceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="docinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="info/keywordset" mode="html.header"/>
+
+ <xsl:if test="$inherit.keywords != 0 and parent::*">
+ <xsl:apply-templates select="parent::*" mode="head.keywords.content"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <xsl:call-template name="add.annotation.links"/>
+ <script type="text/javascript">
+ <xsl:text>
+// Create PopupWindow objects</xsl:text>
+ <xsl:for-each select="//annotation">
+ <xsl:text>
+var popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text> = new PopupWindow("popup-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>");
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.offsetY = 15;
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.autoHide();
+</xsl:text>
+ </xsl:for-each>
+ </script>
+
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+ </xsl:if>
+
+ <!-- system.head.content is like user.head.content, except that
+ it is called before head.content. This is important because it
+ means, for example, that <style> elements output by system.head.content
+ have a lower CSS precedence than the users stylesheet. -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="user.preroot">
+ <!-- Pre-root output, can be used to output comments and PIs. -->
+ <!-- This must not output any element content! -->
+</xsl:template>
+
+<xsl:template name="user.head.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.navigation">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="false()"/>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="false()"/>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="$profiled-nodes" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="$profiled-nodes" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ <xsl:value-of select="$html.append"/>
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+
+ <!-- The default is that we are not chunking... -->
+ <xsl:text>0</xsl:text>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/profile-onechunk.xsl b/docs/xsl-generic/html/profile-onechunk.xsl
new file mode 100644
index 00000000..325b8b12
--- /dev/null
+++ b/docs/xsl-generic/html/profile-onechunk.xsl
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ version="1.0"
+ exclude-result-prefixes="doc">
+
+<!-- ********************************************************************
+ $Id: profile-onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="profile-chunk.xsl"/>
+
+<!-- Ok, using the onechunk parameter makes this all work again. -->
+<!-- It does have the disadvantage that it only works for documents that have -->
+<!-- a root element that is considered a chunk by the chunk.xsl stylesheet. -->
+<!-- Ideally, onechunk would let anything be a chunk. But not today. -->
+
+<xsl:param name="onechunk" select="1"/>
+<xsl:param name="suppress.navigation">1</xsl:param>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/qandaset.xsl b/docs/xsl-generic/html/qandaset.xsl
new file mode 100644
index 00000000..0bc45773
--- /dev/null
+++ b/docs/xsl-generic/html/qandaset.xsl
@@ -0,0 +1,389 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: qandaset.xsl 6944 2007-07-04 08:41:53Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="qandaset">
+ <xsl:variable name="title" select="(blockinfo/title|info/title|title)[1]"/>
+ <xsl:variable name="preamble" select="*[local-name(.) != 'title'
+ and local-name(.) != 'titleabbrev'
+ and local-name(.) != 'qandadiv'
+ and local-name(.) != 'qandaentry']"/>
+ <xsl:variable name="toc">
+ <xsl:call-template name="pi.dbhtml_toc"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="$title"/>
+ <xsl:if test="((contains($toc.params, 'toc') and $toc != '0') or $toc = '1')
+ and not(ancestor::answer and not($qanda.nested.in.toc=0))">
+ <xsl:call-template name="process.qanda.toc"/>
+ </xsl:if>
+ <xsl:apply-templates select="$preamble"/>
+ <xsl:call-template name="process.qandaset"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo/title|
+ qandaset/info/title|
+ qandaset/title">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qanda.section.level"/>
+ </xsl:variable>
+ <xsl:element name="h{string(number($qalevel)+1)}">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="qandaset/blockinfo|qandaset/info">
+ <!-- what should this template really do? -->
+ <xsl:apply-templates select="legalnotice" mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="qandadiv">
+ <xsl:variable name="preamble" select="*[local-name(.) != 'title'
+ and local-name(.) != 'titleabbrev'
+ and local-name(.) != 'qandadiv'
+ and local-name(.) != 'qandaentry']"/>
+
+ <xsl:if test="blockinfo/title|info/title|title">
+ <tr class="qandadiv">
+ <td align="left" valign="top" colspan="2">
+ <xsl:apply-templates select="(blockinfo/title|info/title|title)[1]"/>
+ </td>
+ </tr>
+ </xsl:if>
+
+ <xsl:variable name="toc">
+ <xsl:call-template name="pi.dbhtml_toc"/>
+ </xsl:variable>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="(contains($toc.params, 'toc') and $toc != '0') or $toc = '1'">
+ <tr class="toc">
+ <td align="left" valign="top" colspan="2">
+ <xsl:call-template name="process.qanda.toc"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="$preamble">
+ <tr class="toc">
+ <td align="left" valign="top" colspan="2">
+ <xsl:apply-templates select="$preamble"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:apply-templates select="qandadiv|qandaentry"/>
+</xsl:template>
+
+<xsl:template match="qandadiv/blockinfo/title|
+ qandadiv/info/title|
+ qandadiv/title">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qandadiv.section.level"/>
+ </xsl:variable>
+
+ <xsl:element name="h{string(number($qalevel)+1)}">
+ <xsl:attribute name="class">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/>
+ <xsl:if test="$qandadiv.autolabel != 0">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="qandaentry">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="question">
+ <xsl:variable name="deflabel">
+ <xsl: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>
+
+ <tr>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <td align="left" valign="top">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select=".."/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+
+ <xsl:variable name="label.content">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="$deflabel = 'number' and not(label)">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:if test="string-length($label.content) &gt; 0">
+ <p><b>
+ <xsl:copy-of select="$label.content"/>
+ </b></p>
+ </xsl:if>
+ </td>
+ <td align="left" valign="top">
+ <xsl:choose>
+ <xsl:when test="$deflabel = 'none' and not(label)">
+ <b><xsl:apply-templates select="*[local-name(.) != 'label']"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[local-name(.) != 'label']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="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>
+
+ <tr class="{local-name(.)}">
+ <td align="left" valign="top">
+ <xsl:call-template name="anchor"/>
+ <xsl:variable name="answer.label">
+ <xsl:apply-templates select="." mode="label.markup"/>
+ </xsl:variable>
+ <xsl:if test="string-length($answer.label) &gt; 0">
+ <p><b>
+ <xsl:copy-of select="$answer.label"/>
+ </b></p>
+ </xsl:if>
+ </td>
+ <td align="left" valign="top">
+ <xsl:apply-templates select="*[local-name(.) != 'label'
+ and local-name(.) != 'qandaentry']"/>
+ <!-- * handle nested answer/qandaentry instances -->
+ <!-- * (bug 1509043 from Daniel Leidert) -->
+ <xsl:if test="descendant::question">
+ <xsl:call-template name="process.qandaset"/>
+ </xsl:if>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="label">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.qanda.toc">
+ <!-- * if user wants nested qandaset and qandaentry in main Qandaset TOC, -->
+ <!-- * then don't also include the nested stuff in the sub TOCs -->
+ <dl>
+ <xsl:apply-templates select="qandadiv" mode="qandatoc.mode"/>
+ <xsl:apply-templates select="qandaset|qandaentry" mode="qandatoc.mode"/>
+ </dl>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="qandatoc.mode">
+ <dt><xsl:apply-templates select="title" mode="qandatoc.mode"/></dt>
+ <dd><xsl:call-template name="process.qanda.toc"/></dd>
+</xsl:template>
+
+<xsl:template match="qandadiv/blockinfo/title|
+ qandadiv/info/title|
+ qandadiv/title" mode="qandatoc.mode">
+ <xsl:variable name="qalevel">
+ <xsl:call-template name="qandadiv.section.level"/>
+ </xsl:variable>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/>
+ <xsl:value-of select="$autotoc.label.separator"/>
+ <xsl:text> </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+</xsl:template>
+
+<xsl:template match="qandaset" mode="qandatoc.mode">
+ <xsl:for-each select="qandaentry">
+ <xsl:apply-templates select="." mode="qandatoc.mode"/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="qandatoc.mode">
+ <xsl:apply-templates select="question" mode="qandatoc.mode"/>
+</xsl:template>
+
+<xsl:template match="question" mode="qandatoc.mode">
+ <xsl:variable name="firstch">
+ <xsl:apply-templates select="(*[local-name(.)!='label'])[1]"/>
+ </xsl:variable>
+ <xsl:variable name="deflabel">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
+ /@defaultlabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$qanda.defaultlabel"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <dt>
+ <xsl:apply-templates select="." mode="label.markup"/>
+ <xsl:if test="$deflabel = 'number' and not(label)">
+ <xsl:apply-templates select="." mode="intralabel.punctuation"/>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:value-of select="$firstch"/>
+ </a>
+ </dt>
+ <!-- * include nested qandaset/qandaentry in TOC if user wants it -->
+ <xsl:if test="not($qanda.nested.in.toc = 0)">
+ <xsl:apply-templates select="following-sibling::answer" mode="qandatoc.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="answer" mode="qandatoc.mode">
+ <xsl:if test="descendant::question">
+ <dd>
+ <xsl:call-template name="process.qanda.toc"/>
+ </dd>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.qandaset">
+
+ <xsl:variable name="label-width">
+ <xsl:call-template name="pi.dbhtml_label-width"/>
+ </xsl:variable>
+
+ <xsl:variable name="table-summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellpadding">
+ <xsl:call-template name="pi.dbhtml_cellpadding"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellspacing">
+ <xsl:call-template name="pi.dbhtml_cellspacing"/>
+ </xsl:variable>
+
+ <table border="0" summary="Q and A Set">
+ <xsl:if test="$table-summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$table-summary"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellpadding != ''">
+ <xsl:attribute name="cellpadding">
+ <xsl:value-of select="$cellpadding"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellspacing != ''">
+ <xsl:attribute name="cellspacing">
+ <xsl:value-of select="$cellspacing"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <col align="left">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="$label-width != ''">
+ <xsl:value-of select="$label-width"/>
+ </xsl:when>
+ <xsl:otherwise>1%</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </col>
+ <tbody>
+ <xsl:apply-templates select="qandaentry|qandadiv"/>
+ </tbody>
+ </table>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="no.wrapper.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/refentry.xsl b/docs/xsl-generic/html/refentry.xsl
new file mode 100644
index 00000000..bce630b9
--- /dev/null
+++ b/docs/xsl-generic/html/refentry.xsl
@@ -0,0 +1,309 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: refentry.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="reference">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$generate.id.attributes != 0">
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="reference.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
+ <xsl:call-template name="division.toc"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="reference" mode="division.number">
+ <xsl:number from="book" count="reference" format="I."/>
+</xsl:template>
+
+<xsl:template match="reference/docinfo"></xsl:template>
+<xsl:template match="reference/referenceinfo"></xsl:template>
+<xsl:template match="reference/title"></xsl:template>
+<xsl:template match="reference/subtitle"></xsl:template>
+<xsl:template match="reference/titleabbrev"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="refentry.title">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="refmeta" select="$node//refmeta"/>
+ <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
+ <xsl:variable name="refnamediv" select="$node//refnamediv"/>
+ <xsl:variable name="refname" select="$refnamediv//refname"/>
+ <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="$refentrytitle">
+ <xsl:apply-templates select="$refentrytitle[1]" mode="title"/>
+ </xsl:when>
+ <xsl:when test="$refdesc">
+ <xsl:apply-templates select="$refdesc[1]" mode="title"/>
+ </xsl:when>
+ <xsl:when test="$refname">
+ <xsl:apply-templates select="$refname[1]" mode="title"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <h1 class="title">
+ <xsl:copy-of select="$title"/>
+ </h1>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:if test="$refentry.separator != 0 and preceding-sibling::refentry">
+ <div class="refentry.separator">
+ <hr/>
+ </div>
+ </xsl:if>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:call-template name="refentry.titlepage"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refentry/docinfo|refentry/refentryinfo"></xsl:template>
+<xsl:template match="refentry/info"></xsl:template>
+
+<xsl:template match="refentrytitle|refname|refdescriptor" mode="title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refmeta">
+</xsl:template>
+
+<xsl:template match="manvolnum">
+ <xsl:if test="$refentry.xref.manvolnum != 0">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refmiscinfo">
+</xsl:template>
+
+<xsl:template match="refentrytitle">
+ <xsl:call-template name="inline.charseq"/>
+</xsl:template>
+
+<xsl:template match="refnamediv">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:when test="$refentry.generate.name != 0">
+ <h2>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </h2>
+ </xsl:when>
+ <xsl:when test="$refentry.generate.title != 0">
+ <h2>
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ </xsl:when>
+ </xsl:choose>
+
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="refname">
+ <xsl:if test="not(preceding-sibling::refdescriptor)">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::refname">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refpurpose">
+ <xsl:if test="node()">
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">em-dash</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refdescriptor">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refclass">
+ <xsl:if test="$refclass.suppress = 0">
+ <p>
+ <b>
+ <xsl:if test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </b>
+ </p>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="anchor"/>
+ <h2>
+ <xsl:choose>
+ <xsl:when test="refsynopsisdiv/title|title">
+ <xsl:apply-templates select="(refsynopsisdiv/title|title)[1]"
+ mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refsynopsisdivinfo"></xsl:template>
+
+<xsl:template match="refsynopsisdiv/title">
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv/title" mode="titlepage.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refsection|refsect1|refsect2|refsect3">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <!-- pick up info title -->
+ <xsl:apply-templates select="(title|info/title)[1]"/>
+ <xsl:apply-templates select="node()[not(self::title) and not(self::info)]"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refsection/title|refsection/info/title">
+ <!-- the ID is output in the block.object call for refsect1 -->
+ <xsl:variable name="level" select="count(ancestor-or-self::refsection)"/>
+ <xsl:variable name="refsynopsisdiv">
+ <xsl:text>0</xsl:text>
+ <xsl:if test="ancestor::refsynopsisdiv">1</xsl:if>
+ </xsl:variable>
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <xsl:when test="$level+$refsynopsisdiv &gt; 5">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$level+1+$refsynopsisdiv"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="h{$hlevel}">
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="refsect1/title|refsect1/info/title">
+ <!-- the ID is output in the block.object call for refsect1 -->
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="refsect2/title|refsect2/info/title">
+ <!-- the ID is output in the block.object call for refsect2 -->
+ <h3>
+ <xsl:apply-templates/>
+ </h3>
+</xsl:template>
+
+<xsl:template match="refsect3/title|refsect3/info/title">
+ <!-- the ID is output in the block.object call for refsect3 -->
+ <h4>
+ <xsl:apply-templates/>
+ </h4>
+</xsl:template>
+
+<xsl:template match="refsectioninfo|refsection/info"></xsl:template>
+<xsl:template match="refsect1info|refsect1/info"></xsl:template>
+<xsl:template match="refsect2info|refsect2/info"></xsl:template>
+<xsl:template match="refsect3info|refsect3/info"></xsl:template>
+
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/sections.xsl b/docs/xsl-generic/html/sections.xsl
new file mode 100644
index 00000000..efa45298
--- /dev/null
+++ b/docs/xsl-generic/html/sections.xsl
@@ -0,0 +1,622 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: sections.xsl 7000 2007-07-10 20:41:35Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="section">
+ <xsl:variable name="depth" select="count(ancestor::section)+1"/>
+
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:call-template name="section.titlepage"/>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $depth &lt;= $generate.section.toc.level">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="section.title">
+ <!-- the context node should be the title of a section when called -->
+ <xsl:variable name="section" select="(ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5)[last()]"/>
+
+ <xsl:variable name="renderas">
+ <xsl:choose>
+ <xsl:when test="$section/@renderas = 'sect1'">1</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect2'">2</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect3'">3</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect4'">4</xsl:when>
+ <xsl:when test="$section/@renderas = 'sect5'">5</xsl:when>
+ <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="level">
+ <xsl:choose>
+ <xsl:when test="$renderas != ''">
+ <xsl:value-of select="$renderas"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="level" select="$level"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="$section" mode="object.title.markup">
+ <xsl:with-param name="allow-anchors" select="1"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="section/title
+ |section/info/title
+ |sectioninfo/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect1">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 1">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect1/title
+ |sect1/info/title
+ |sect1info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect2">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 2">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect2/title
+ |sect2/info/title
+ |sect2info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect3">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 3">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect3/title
+ |sect3/info/title
+ |sect3info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect4">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect5'">
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 4">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect4/title
+ |sect4/info/title
+ |sect4info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="sect5">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">
+ <xsl:call-template name="sect1.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect2'">
+ <xsl:call-template name="sect2.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect3'">
+ <xsl:call-template name="sect3.titlepage"/>
+ </xsl:when>
+ <xsl:when test="@renderas = 'sect4'">
+ <xsl:call-template name="sect4.titlepage"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sect5.titlepage"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="toc.params">
+ <xsl:call-template name="find.path.params">
+ <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="contains($toc.params, 'toc')
+ and $generate.section.toc.level &gt;= 5">
+ <xsl:call-template name="section.toc">
+ <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
+ </xsl:call-template>
+ <xsl:call-template name="section.toc.separator"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:call-template name="process.chunk.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="sect5/title
+ |sect5/info/title
+ |sect5info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="simplesect">
+ <xsl:call-template name="id.warning"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="dir">
+ <xsl:with-param name="inherit" select="1"/>
+ </xsl:call-template>
+ <xsl:call-template name="language.attribute"/>
+ <xsl:call-template name="simplesect.titlepage"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="simplesect/title|simplesect/info/title"
+ mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.title"/>
+</xsl:template>
+
+<xsl:template match="section/title"></xsl:template>
+<xsl:template match="section/titleabbrev"></xsl:template>
+<xsl:template match="section/subtitle"></xsl:template>
+<xsl:template match="sectioninfo"></xsl:template>
+<xsl:template match="section/info"></xsl:template>
+
+<xsl:template match="sect1/title"></xsl:template>
+<xsl:template match="sect1/titleabbrev"></xsl:template>
+<xsl:template match="sect1/subtitle"></xsl:template>
+<xsl:template match="sect1info"></xsl:template>
+<xsl:template match="sect1/info"></xsl:template>
+
+<xsl:template match="sect2/title"></xsl:template>
+<xsl:template match="sect2/subtitle"></xsl:template>
+<xsl:template match="sect2/titleabbrev"></xsl:template>
+<xsl:template match="sect2info"></xsl:template>
+<xsl:template match="sect2/info"></xsl:template>
+
+<xsl:template match="sect3/title"></xsl:template>
+<xsl:template match="sect3/subtitle"></xsl:template>
+<xsl:template match="sect3/titleabbrev"></xsl:template>
+<xsl:template match="sect3info"></xsl:template>
+<xsl:template match="sect3/info"></xsl:template>
+
+<xsl:template match="sect4/title"></xsl:template>
+<xsl:template match="sect4/subtitle"></xsl:template>
+<xsl:template match="sect4/titleabbrev"></xsl:template>
+<xsl:template match="sect4info"></xsl:template>
+<xsl:template match="sect4/info"></xsl:template>
+
+<xsl:template match="sect5/title"></xsl:template>
+<xsl:template match="sect5/subtitle"></xsl:template>
+<xsl:template match="sect5/titleabbrev"></xsl:template>
+<xsl:template match="sect5info"></xsl:template>
+<xsl:template match="sect5/info"></xsl:template>
+
+<xsl:template match="simplesect/title"></xsl:template>
+<xsl:template match="simplesect/subtitle"></xsl:template>
+<xsl:template match="simplesect/titleabbrev"></xsl:template>
+<xsl:template match="simplesect/info"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="section.heading">
+ <xsl:param name="section" select="."/>
+ <xsl:param name="level" select="1"/>
+ <xsl:param name="allow-anchors" select="1"/>
+ <xsl:param name="title"/>
+ <xsl:param name="class" select="'title'"/>
+
+ <xsl:variable name="id">
+ <xsl:choose>
+ <!-- if title is in an *info wrapper, get the grandparent -->
+ <xsl:when test="contains(local-name(..), 'info')">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../.."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- HTML H level is one higher than section level -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <!-- highest valid HTML H level is H6; so anything nested deeper
+ than 5 levels down just becomes H6 -->
+ <xsl:when test="$level &gt; 5">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$level + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="h{$hlevel}">
+ <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
+ <xsl:if test="$css.decoration != '0'">
+ <xsl:if test="$hlevel&lt;3">
+ <xsl:attribute name="style">clear: both</xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="$allow-anchors != 0 and $generate.id.attributes = 0">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$section"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$generate.id.attributes != 0 and not(local-name(.) = 'appendix')">
+ <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$title"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="bridgehead">
+ <xsl:variable name="container"
+ select="(ancestor::appendix
+ |ancestor::article
+ |ancestor::bibliography
+ |ancestor::chapter
+ |ancestor::glossary
+ |ancestor::glossdiv
+ |ancestor::index
+ |ancestor::partintro
+ |ancestor::preface
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::section
+ |ancestor::setindex
+ |ancestor::simplesect)[last()]"/>
+
+ <xsl:variable name="clevel">
+ <xsl:choose>
+ <xsl:when test="local-name($container) = 'appendix'
+ or local-name($container) = 'chapter'
+ or local-name($container) = 'article'
+ or local-name($container) = 'bibliography'
+ or local-name($container) = 'glossary'
+ or local-name($container) = 'index'
+ or local-name($container) = 'partintro'
+ or local-name($container) = 'preface'
+ or local-name($container) = 'setindex'">1</xsl:when>
+ <xsl:when test="local-name($container) = 'glossdiv'">
+ <xsl:value-of select="count(ancestor::glossdiv)+1"/>
+ </xsl:when>
+ <xsl:when test="local-name($container) = 'sect1'
+ or local-name($container) = 'sect2'
+ or local-name($container) = 'sect3'
+ or local-name($container) = 'sect4'
+ or local-name($container) = 'sect5'
+ or local-name($container) = 'refsect1'
+ or local-name($container) = 'refsect2'
+ or local-name($container) = 'refsect3'
+ or local-name($container) = 'section'
+ or local-name($container) = 'simplesect'">
+ <xsl:variable name="slevel">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$container"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$slevel + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- HTML H level is one higher than section level -->
+ <xsl:variable name="hlevel">
+ <xsl:choose>
+ <xsl:when test="@renderas = 'sect1'">2</xsl:when>
+ <xsl:when test="@renderas = 'sect2'">3</xsl:when>
+ <xsl:when test="@renderas = 'sect3'">4</xsl:when>
+ <xsl:when test="@renderas = 'sect4'">5</xsl:when>
+ <xsl:when test="@renderas = 'sect5'">6</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$clevel + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="h{$hlevel}">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="section/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="simplesect/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect1/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect2/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect3/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect4/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template match="sect5/subtitle" mode="titlepage.mode" priority="2">
+ <xsl:call-template name="section.subtitle"/>
+</xsl:template>
+
+<xsl:template name="section.subtitle">
+ <!-- the context node should be the subtitle of a section when called -->
+ <xsl:variable name="section" select="(ancestor::section
+ |ancestor::simplesect
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5)[last()]"/>
+
+ <xsl:variable name="level">
+ <xsl:call-template name="section.level">
+ <xsl:with-param name="node" select="$section"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="section.heading">
+ <xsl:with-param name="section" select=".."/>
+ <xsl:with-param name="allow-anchors" select="0"/>
+ <!-- subtitle heading level one higher than section level -->
+ <xsl:with-param name="level" select="$level + 1"/>
+ <xsl:with-param name="class" select="'subtitle'"/>
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="$section" mode="object.subtitle.markup">
+ <xsl:with-param name="allow-anchors" select="0"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/html/synop.xsl b/docs/xsl-generic/html/synop.xsl
new file mode 100644
index 00000000..1d52c520
--- /dev/null
+++ b/docs/xsl-generic/html/synop.xsl
@@ -0,0 +1,1596 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp "&#160;">
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: synop.xsl 7250 2007-08-18 10:19:00Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- synopsis is in verbatim -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="cmdsynopsis">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <p>
+ <xsl:if test="..//processing-instruction('dbcmdlist')">
+ <!-- * Placing a dbcmdlist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all cmdsynopsis instances -->
+ <!-- * that are descendants of that element; so for any -->
+ <!-- * cmdsynopsis that is a descendant of an element containing -->
+ <!-- * a dbcmdlist PI, we need to output an a@id instance so that -->
+ <!-- * we will have something to link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command">
+ <br/>
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command[1]" priority="2">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="group|arg" name="group-or-arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$sepchar"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="group/arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$arg.or.sep"/>
+ </xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <br/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="synopfragmentref">
+ <xsl:variable name="target" select="key('id',@linkend)"/>
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="$target" mode="synopfragment.number"/>
+ </xsl:variable>
+ <i>
+ <a href="#{@linkend}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:apply-templates/>
+ </i>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <p>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <a name="{$id}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcsynopsis">
+ <xsl:if test="..//processing-instruction('dbfunclist')">
+ <!-- * Placing a dbfunclist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all funcsynopsis instances that -->
+ <!-- * are descendants of that element; so for any funcsynopsis that is -->
+ <!-- * a descendant of an element containing a dbfunclist PI, we need -->
+ <!-- * to output an a@id instance so that we will have something to -->
+ <!-- * link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsisinfo">
+ <pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </pre>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype -->
+<!--
+
+funcprototype ::= (funcdef,
+ (void|varargs|paramdef+))
+
+funcdef ::= (#PCDATA|type|replaceable|function)*
+
+paramdef ::= (#PCDATA|type|replaceable|parameter|funcparams)*
+-->
+
+<xsl:template match="funcprototype">
+ <xsl:variable name="html-style">
+ <xsl:call-template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="$html-style != ''">
+ <xsl:value-of select="$html-style"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$funcsynopsis.style"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:variable name="tabular-p"
+ select="$funcsynopsis.tabular.threshold &gt; 0
+ and string-length(.) &gt; $funcsynopsis.tabular.threshold"/>
+-->
+
+ <xsl:variable name="tabular-p" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$style = 'kr' and $tabular-p">
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'kr'">
+ <xsl:apply-templates select="." mode="kr-nontabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'ansi' and $tabular-p">
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, non-tabular -->
+
+<xsl:template match="funcprototype" mode="kr-nontabular">
+ <p>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:if test="paramdef">
+ <br/>
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </xsl:if>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-nontabular">
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-nontabular">
+ <xsl:apply-templates select="parameter" mode="kr-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
+ <xsl:if test="preceding-sibling::paramdef"><br/></xsl:if>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, tabular -->
+
+<xsl:template match="funcprototype" mode="kr-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"
+ style="padding-bottom: 1em">
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="kr-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <xsl:if test="paramdef">
+ <table border="0" summary="Function argument synopsis"
+ cellspacing="0" cellpadding="0">
+ <xsl:if test="following-sibling::funcprototype">
+ <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="paramdef" mode="kr-tabular-funcsynopsis-mode"/>
+ </table>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="kr-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-tabular">
+ <td>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular">
+ <td>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
+ <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <tr>
+ <xsl:choose>
+ <xsl:when test="$type != '' and funcparams">
+ <td>
+ <code>
+ <xsl:copy-of select="$type"/>
+ </code>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type/following-sibling::*"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:when test="funcparams">
+ <td colspan="2">
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter"
+ mode="kr-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]"
+ mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, non-tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-nontabular">
+ <p>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-nontabular">
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-nontabular">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-nontabular">
+ <code>(</code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <xsl:if test="following-sibling::funcprototype">
+ <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
+ </xsl:if>
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-tabular">
+ <td>
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td>&#160;</td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-tabular">
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type"
+ mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
+ <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$type != '' and funcparams">
+ <td>
+ <xsl:copy-of select="$type"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type/following-sibling::*"
+ mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*"
+ mode="ansi-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]"
+ mode="ansi-tabular"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <xsl:apply-templates select="parameter"
+ mode="ansi-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]"
+ mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-tabular">
+ <code>(</code>
+ <xsl:apply-templates/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:variable name="default-classsynopsis-language">java</xsl:variable>
+
+<xsl:template match="classsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |constructorsynopsis
+ |destructorsynopsis">
+ <xsl:param name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-classsynopsis-language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$language='java' or $language='Java'">
+ <xsl:apply-templates select="." mode="java"/>
+ </xsl:when>
+ <xsl:when test="$language='perl' or $language='Perl'">
+ <xsl:apply-templates select="." mode="perl"/>
+ </xsl:when>
+ <xsl:when test="$language='idl' or $language='IDL'">
+ <xsl:apply-templates select="." mode="idl"/>
+ </xsl:when>
+ <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
+ <xsl:apply-templates select="." mode="cpp"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized language on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$language"/>
+ </xsl:message>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="language"
+ select="$default-classsynopsis-language"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="synop-break">
+ <xsl:if test="parent::classsynopsis
+ or (following-sibling::fieldsynopsis
+ |following-sibling::methodsynopsis
+ |following-sibling::constructorsynopsis
+ |following-sibling::destructorsynopsis)">
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+
+<!-- ===== Java ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="java">
+ <pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ooclass[1]" mode="java"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text> extends</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text>implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="java"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text>throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="java"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="java"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="java">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="java">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>void&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="java">
+ <xsl:param name="indent">0</xsl:param>
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>,</xsl:text>
+ <br/>
+ <xsl:if test="$indent &gt; 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">&nbsp;</xsl:with-param>
+ <xsl:with-param name="count" select="$indent + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="java"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="decl">
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="java"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="java"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="java"/>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$decl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="java">
+ <xsl:with-param name="indent" select="string-length($decl)"/>
+ </xsl:apply-templates>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="java"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="java"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== C++ ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="cpp">
+ <pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="cpp"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="cpp"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="cpp">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>void&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="cpp">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="cpp"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="cpp"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="cpp"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="cpp"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== IDL ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="idl">
+ <pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>interface </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="idl"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/>
+ <xsl:if test="oointerface|ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="idl"/>
+ <xsl:if test="ooexception">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="idl"/>
+ </xsl:if>
+ <xsl:text>&nbsp;{</xsl:text>
+ <br/>
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="idl"/>
+ <xsl:text>}</xsl:text>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="idl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="idl">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>void&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="idl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="idl"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="idl"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="idl"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="idl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <br/>
+ <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;raises(</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="idl"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== Perl ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="perl">
+ <pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>package </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="perl"/>
+ <xsl:text>;</xsl:text>
+ <br/>
+
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>@ISA = (</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
+ <xsl:text>);</xsl:text>
+ <br/>
+ </xsl:if>
+
+ <xsl:apply-templates select="constructorsynopsis
+ |destructorsynopsis
+ |fieldsynopsis
+ |methodsynopsis
+ |classsynopsisinfo" mode="perl"/>
+ </pre>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="perl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text>&nbsp;</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="perl">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>&nbsp;&nbsp;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>=&nbsp;</xsl:text>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>void&nbsp;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="perl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="perl"
+ match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>sub </xsl:text>
+
+ <xsl:apply-templates select="methodname" mode="perl"/>
+ <xsl:text> { ... };</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
+<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
+<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
+<!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
+<!-- * per-mode matches for those linking elements in order for them -->
+<!-- * to be processed as expected. -->
+
+<xsl:template match="link|olink|xref" mode="java">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="cpp">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="idl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="perl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/table.xsl b/docs/xsl-generic/html/table.xsl
new file mode 100644
index 00000000..9e85d6d0
--- /dev/null
+++ b/docs/xsl-generic/html/table.xsl
@@ -0,0 +1,1120 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table"
+ xmlns:xtbl="xalan://com.nwalsh.xalan.Table"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table"
+ exclude-result-prefixes="doc stbl xtbl lxslt ptbl"
+ version='1.0'>
+
+<xsl:include href="../common/table.xsl"/>
+
+<!-- ********************************************************************
+ $Id: table.xsl 7009 2007-07-11 09:42:54Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<lxslt:component prefix="xtbl"
+ functions="adjustColumnWidths"/>
+
+<xsl:template name="empty.table.cell">
+ <xsl:param name="colnum" select="0"/>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies. -->
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row
+ or ancestor-or-self::thead/following-sibling::tbody
+ or ancestor-or-self::tbody/preceding-sibling::tfoot)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="number($colnum) &gt;= ancestor::tgroup/@cols">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/>
+ <xsl:with-param name="row" select="ancestor-or-self::row[1]"/>
+ <xsl:with-param name="colnum" select="$colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <td class="auto-generated">
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:attribute name="style">
+ <xsl:if test="$colsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="border">
+ <xsl:param name="side" select="'left'"/>
+ <xsl:param name="padding" select="0"/>
+ <xsl:param name="style" select="$table.cell.border.style"/>
+ <xsl:param name="color" select="$table.cell.border.color"/>
+ <xsl:param name="thickness" select="$table.cell.border.thickness"/>
+
+ <!-- Note: Some browsers (mozilla) require at least a width and style. -->
+
+ <xsl:choose>
+ <xsl:when test="($thickness != ''
+ and $style != ''
+ and $color != '')
+ or ($thickness != ''
+ and $style != '')
+ or ($thickness != '')">
+ <!-- use the compound property if we can: -->
+ <!-- it saves space and probably works more reliably -->
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$thickness"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$style"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$color"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- we need to specify the styles individually -->
+ <xsl:if test="$thickness != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-width: </xsl:text>
+ <xsl:value-of select="$thickness"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$style != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-style: </xsl:text>
+ <xsl:value-of select="$style"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$color != ''">
+ <xsl:text>border-</xsl:text>
+ <xsl:value-of select="$side"/>
+ <xsl:text>-color: </xsl:text>
+ <xsl:value-of select="$color"/>
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tgroup" name="tgroup">
+ <xsl:if test="not(@cols) or @cols = '' or string(number(@cols)) = 'NaN'">
+ <xsl:message terminate="yes">
+ <xsl:text>Error: CALS tables must specify the number of columns.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellspacing">
+ <xsl:call-template name="pi.dbhtml_cellspacing"/>
+ </xsl:variable>
+
+ <xsl:variable name="cellpadding">
+ <xsl:call-template name="pi.dbhtml_cellpadding"/>
+ </xsl:variable>
+
+ <table>
+ <xsl:choose>
+ <!-- If there's a textobject/phrase for the table summary, use it -->
+ <xsl:when test="../textobject/phrase">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="../textobject/phrase"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- If there's a <?dbhtml table-summary="foo"?> PI, use it for
+ the HTML table summary attribute -->
+ <xsl:when test="$summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$summary"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- Otherwise, if there's a title, use that -->
+ <xsl:when test="../title">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="string(../title)"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- Otherwise, forget the whole idea -->
+ <xsl:otherwise><!-- nevermind --></xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$cellspacing != '' or $html.cellspacing != ''">
+ <xsl:attribute name="cellspacing">
+ <xsl:choose>
+ <xsl:when test="$cellspacing != ''">
+ <xsl:value-of select="$cellspacing"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.cellspacing"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$cellpadding != '' or $html.cellpadding != ''">
+ <xsl:attribute name="cellpadding">
+ <xsl:choose>
+ <xsl:when test="$cellpadding != ''">
+ <xsl:value-of select="$cellpadding"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$html.cellpadding"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="../@pgwide=1 or local-name(.) = 'entrytbl'">
+ <xsl:attribute name="width">100%</xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$table.borders.with.css != 0">
+ <xsl:choose>
+ <xsl:when test="../@frame='all' or (not(../@frame) and $default.table.frame='all')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'left'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='topbot' or (not(../@frame) and $default.table.frame='topbot')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='top' or (not(../@frame) and $default.table.frame='top')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'top'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='bottom' or (not(../@frame) and $default.table.frame='bottom')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='sides' or (not(../@frame) and $default.table.frame='sides')">
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'left'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ <xsl:with-param name="style" select="$table.frame.border.style"/>
+ <xsl:with-param name="color" select="$table.frame.border.color"/>
+ <xsl:with-param name="thickness" select="$table.frame.border.thickness"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="../@frame='none'">
+ <xsl:attribute name="style">
+ <xsl:text>border: none;</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style">
+ <xsl:text>border-collapse: collapse;</xsl:text>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+ <xsl:when test="../@frame='none' or (not(../@frame) and $default.table.frame='none') or local-name(.) = 'entrytbl'">
+ <xsl:attribute name="border">0</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="border">1</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="colgroup">
+ <colgroup>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="@cols"/>
+ </xsl:call-template>
+ </colgroup>
+ </xsl:variable>
+
+ <xsl:variable name="explicit.table.width">
+ <xsl:call-template name="pi.dbhtml_table-width">
+ <xsl:with-param name="node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="table.width">
+ <xsl:choose>
+ <xsl:when test="$explicit.table.width != ''">
+ <xsl:value-of select="$explicit.table.width"/>
+ </xsl:when>
+ <xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$default.table.width != ''
+ or $explicit.table.width != ''">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="contains($table.width, '%')">
+ <xsl:value-of select="$table.width"/>
+ </xsl:when>
+ <xsl:when test="$use.extensions != 0
+ and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:convertLength')">
+ <xsl:value-of select="stbl:convertLength($table.width)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xtbl:convertLength')">
+ <xsl:value-of select="xtbl:convertLength($table.width)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No convertLength function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$table.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0
+ and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:adjustColumnWidths')">
+ <xsl:copy-of select="stbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xtbl:adjustColumnWidths')">
+ <xsl:copy-of select="xtbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:when test="function-available('ptbl:adjustColumnWidths')">
+ <xsl:copy-of select="ptbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No adjustColumnWidths function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$colgroup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="thead"/>
+ <xsl:apply-templates select="tfoot"/>
+ <xsl:apply-templates select="tbody"/>
+
+ <xsl:if test=".//footnote">
+ <tbody class="footnotes">
+ <tr>
+ <td colspan="{@cols}">
+ <xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/>
+ </td>
+ </tr>
+ </tbody>
+ </xsl:if>
+ </table>
+</xsl:template>
+
+<xsl:template match="tgroup/processing-instruction('dbhtml')">
+ <xsl:variable name="summary">
+ <xsl:call-template name="pi.dbhtml_table-summary"/>
+ </xsl:variable>
+
+ <!-- Suppress the table-summary PI -->
+ <xsl:if test="$summary = ''">
+ <xsl:processing-instruction name="dbhtml">
+ <xsl:value-of select="."/>
+ </xsl:processing-instruction>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="colspec"></xsl:template>
+
+<xsl:template match="spanspec"></xsl:template>
+
+<xsl:template match="thead|tfoot">
+ <xsl:element name="{local-name(.)}">
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:apply-templates>
+
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="tbody">
+ <tbody>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="blank.spans">
+ <xsl:with-param name="cols" select="../@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:apply-templates>
+
+ </tbody>
+</xsl:template>
+
+<xsl:template match="row">
+ <xsl:param name="spans"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($spans, '0')">
+ <xsl:call-template name="normal-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!--
+ <xsl:message>
+ <xsl:text>Ignoring row: </xsl:text>
+ <xsl:value-of select="$spans"/>
+ <xsl:text> = </xsl:text>
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:message>
+ -->
+
+ <xsl:if test="normalize-space(.//text()) != ''">
+ <xsl:message>Warning: overlapped row contains content!</xsl:message>
+ </xsl:if>
+
+ <tr><xsl:comment> This row intentionally left blank </xsl:comment></tr>
+
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans">
+ <xsl:call-template name="consume-row">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="normal-row">
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="row-height">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_row-height"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="bgcolor">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_bgcolor"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="class">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_class"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <tr>
+ <xsl:call-template name="tr.attributes">
+ <xsl:with-param name="rownum">
+ <xsl:number from="tgroup" count="row"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="$row-height != ''">
+ <xsl:attribute name="height">
+ <xsl:value-of select="$row-height"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$class != ''">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$class"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:if test="@rowsep = 1 and following-sibling::row">
+ <xsl:attribute name="style">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="(entry|entrytbl)[1]">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </tr>
+
+ <xsl:if test="following-sibling::row">
+ <xsl:variable name="nextspans">
+ <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="spans" select="$nextspans"/>
+ </xsl:apply-templates>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="entry">
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="cellgi">
+ <xsl:choose>
+ <xsl:when test="ancestor::thead">th</xsl:when>
+ <xsl:when test="ancestor::tfoot">th</xsl:when>
+ <xsl:otherwise>td</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="empty.cell" select="count(node()) = 0"/>
+
+ <xsl:variable name="named.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:choose>
+ <xsl:when test="$named.colnum &gt; 0">
+ <xsl:value-of select="$named.colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$col"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="rowsep">
+ <xsl:choose>
+ <!-- If this is the last row, rowsep never applies. -->
+ <xsl:when test="ancestor::entrytbl
+ and not (ancestor-or-self::row[1]/following-sibling::row)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:when test="not(ancestor-or-self::row[1]/following-sibling::row
+ or ancestor-or-self::thead/following-sibling::tbody
+ or ancestor-or-self::tbody/preceding-sibling::tfoot)">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:when test="@morerows and not(@morerows &lt;
+ count(ancestor-or-self::row[1]/following-sibling::row))">
+ <xsl:value-of select="0"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'rowsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="colsep">
+ <xsl:choose>
+ <!-- If this is the last column, colsep never applies. -->
+ <xsl:when test="$following.spans = ''">0</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'colsep'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="valign">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'valign'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="align">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'align'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="char">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'char'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="charoff">
+ <xsl:call-template name="inherited.table.attribute">
+ <xsl:with-param name="entry" select="."/>
+ <xsl:with-param name="colnum" select="$entry.colnum"/>
+ <xsl:with-param name="attribute" select="'charoff'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:call-template name="empty.table.cell"/>
+ <xsl:call-template name="entry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="bgcolor">
+ <xsl:if test="processing-instruction('dbhtml')">
+ <xsl:call-template name="pi.dbhtml_bgcolor"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:element name="{$cellgi}">
+ <xsl:if test="$bgcolor != ''">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$bgcolor"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$entry.propagates.style != 0 and @role">
+ <xsl:apply-templates select="." mode="class.attribute">
+ <xsl:with-param name="class" select="@role"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <xsl:if test="$show.revisionflag and @revisionflag">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@revisionflag"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$table.borders.with.css != 0">
+ <xsl:attribute name="style">
+ <xsl:if test="$colsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$rowsep &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="@morerows &gt; 0">
+ <xsl:attribute name="rowspan">
+ <xsl:value-of select="1+@morerows"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$entry.colspan &gt; 1">
+ <xsl:attribute name="colspan">
+ <xsl:value-of select="$entry.colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$align != ''">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$align"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$valign != ''">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="$valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$char != ''">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$char"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$charoff != ''">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="not(preceding-sibling::*) and
+ (ancestor::row[1]/@id or ancestor::row[1]/@xml:id)">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="ancestor::row[1]"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="$empty.cell">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:when test="self::entrytbl">
+ <xsl:call-template name="tgroup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry
+ |following-sibling::entrytbl)[1]">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="finaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="entry|entrytbl" name="sentry" mode="span">
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+
+ <xsl:variable name="entry.colnum">
+ <xsl:call-template name="entry.colnum"/>
+ </xsl:variable>
+
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))">
+ <xsl:value-of select="substring-before($spans,':')-1"/>
+ <xsl:text>:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col+1"/>
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="number($entry.colnum) &gt; $col">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="sentry">
+ <xsl:with-param name="col" select="$col+$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>
+ <xsl:when test="@morerows">
+ <xsl:value-of select="@morerows"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>:</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="following-sibling::entry|following-sibling::entrytbl">
+ <xsl:apply-templates select="(following-sibling::entry
+ |following-sibling::entrytbl)[1]"
+ mode="span">
+ <xsl:with-param name="col" select="$col+$entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="sfinaltd">
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.colgroup">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$count &gt; $cols"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$count"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.col">
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs" select="./colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)">
+ <col/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <col>
+ <xsl:if test="$colspec/@colwidth
+ and $use.extensions != 0
+ and $tablecolumns.extension != 0">
+ <xsl:attribute name="width">
+ <xsl:choose>
+ <xsl:when test="normalize-space($colspec/@colwidth) = '*'">
+ <xsl:value-of select="'1*'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$colspec/@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$colspec/@align"/>
+ </xsl:attribute>
+ </xsl:when>
+ <!-- Suggested by Pavel ZAMPACH <zampach@nemcb.cz> -->
+ <xsl:when test="$colspecs/ancestor::tgroup/@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$colspecs/ancestor::tgroup/@align"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$colspec/@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$colspec/@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$colspec/@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$colspec/@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ </col>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="colspec.colwidth">
+ <!-- when this macro is called, the current context must be an entry -->
+ <xsl:param name="colname"></xsl:param>
+ <!-- .. = row, ../.. = thead|tbody, ../../.. = tgroup -->
+ <xsl:param name="colspecs" select="../../../../tgroup/colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)"></xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colname=$colname">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colspec.colwidth">
+ <xsl:with-param name="colname" select="$colname"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="tr.attributes">
+ <xsl:param name="row" select="."/>
+ <xsl:param name="rownum" select="0"/>
+
+ <!-- by default, do nothing. But you might want to say:
+
+ <xsl:if test="$rownum mod 2 = 0">
+ <xsl:attribute name="class">oddrow</xsl:attribute>
+ </xsl:if>
+
+ -->
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/html/task.xsl b/docs/xsl-generic/html/task.xsl
new file mode 100644
index 00000000..d4d22f60
--- /dev/null
+++ b/docs/xsl-generic/html/task.xsl
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ********************************************************************
+ $Id: task.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="task">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="preamble"
+ select="*[not(self::title
+ or self::titleabbrev)]"/>
+
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="title and $placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$preamble"/>
+
+ <xsl:if test="title and $placement != 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="task/title">
+ <!-- nop -->
+</xsl:template>
+
+<xsl:template match="tasksummary">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="tasksummary/title"/>
+
+<xsl:template match="taskprerequisites">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskprerequisites/title"/>
+
+<xsl:template match="taskrelated">
+ <xsl:call-template name="semiformal.object"/>
+</xsl:template>
+
+<xsl:template match="taskrelated/title"/>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/titlepage.templates.xml b/docs/xsl-generic/html/titlepage.templates.xml
new file mode 100644
index 00000000..664dc14e
--- /dev/null
+++ b/docs/xsl-generic/html/titlepage.templates.xml
@@ -0,0 +1,662 @@
+<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="article" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="set" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="book" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="part" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="division.title"
+ param:node="ancestor-or-self::part[1]"/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="partintro" t:wrapper="div">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="reference" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="refentry" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+<!-- uncomment this if you want refentry titlepages
+ <title t:force="1"
+ t:named-template="refentry.title"
+ param:node="ancestor-or-self::refentry[1]"/>
+-->
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator/>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="dedication" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::dedication[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="preface" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="chapter" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="appendix" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="section" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect1" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect2" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect3" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect4" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect5" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="simplesect" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="bibliography" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::bibliography[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="glossary" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::glossary[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="index" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::index[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="setindex" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::setindex[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+</t:templates>
diff --git a/docs/xsl-generic/html/titlepage.templates.xsl b/docs/xsl-generic/html/titlepage.templates.xsl
new file mode 100644
index 00000000..5fef8eca
--- /dev/null
+++ b/docs/xsl-generic/html/titlepage.templates.xsl
@@ -0,0 +1,3622 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl-->
+
+<xsl:template name="article.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="articleinfo/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
+ </xsl:when>
+ <xsl:when test="artheader/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="articleinfo/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="artheader/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/>
+ <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="article.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="article.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="article.titlepage.before.recto"/>
+ <xsl:call-template name="article.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="article.titlepage.before.verso"/>
+ <xsl:call-template name="article.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="article.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="article.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="article.titlepage.recto.style">
+<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="set.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="setinfo/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="setinfo/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
+ <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="set.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="set.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="set.titlepage.before.recto"/>
+ <xsl:call-template name="set.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="set.titlepage.before.verso"/>
+ <xsl:call-template name="set.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="set.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="set.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="set.titlepage.recto.style">
+<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="book.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="bookinfo/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="bookinfo/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/legalnotice"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revision"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revhistory"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/abstract"/>
+ <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="book.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="book.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="book.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="book.titlepage.before.recto"/>
+ <xsl:call-template name="book.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="book.titlepage.before.verso"/>
+ <xsl:call-template name="book.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="book.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="book.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="book.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="book.titlepage.recto.style">
+<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="part.titlepage.recto">
+ <div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:call-template name="division.title">
+<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="partinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/abstract"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="part.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="part.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="part.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="part.titlepage.before.recto"/>
+ <xsl:call-template name="part.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="part.titlepage.before.verso"/>
+ <xsl:call-template name="part.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="part.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="part.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="part.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="part.titlepage.recto.style">
+<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="partintroinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="partintroinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="partintro.titlepage">
+ <div>
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="partintro.titlepage.before.recto"/>
+ <xsl:call-template name="partintro.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="partintro.titlepage.before.verso"/>
+ <xsl:call-template name="partintro.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="partintro.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="partintro.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
+<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="referenceinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="referenceinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.separator"><hr/>
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="reference.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="reference.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="reference.titlepage.before.recto"/>
+ <xsl:call-template name="reference.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="reference.titlepage.before.verso"/>
+ <xsl:call-template name="reference.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="reference.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="reference.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="reference.titlepage.recto.style">
+<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.recto">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="refentry.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="refentry.titlepage.before.recto"/>
+ <xsl:call-template name="refentry.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="refentry.titlepage.before.verso"/>
+ <xsl:call-template name="refentry.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="refentry.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="refentry.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="refentry.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.recto">
+ <div xsl:use-attribute-sets="dedication.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="dedicationinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="dedication.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="dedication.titlepage.before.recto"/>
+ <xsl:call-template name="dedication.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="dedication.titlepage.before.verso"/>
+ <xsl:call-template name="dedication.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="dedication.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="dedication.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="dedication.titlepage.recto.style">
+<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="prefaceinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="preface.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="preface.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="preface.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="preface.titlepage.before.recto"/>
+ <xsl:call-template name="preface.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="preface.titlepage.before.verso"/>
+ <xsl:call-template name="preface.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="preface.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="preface.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="preface.titlepage.recto.style">
+<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="chapterinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="chapterinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="chapter.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="chapter.titlepage.before.recto"/>
+ <xsl:call-template name="chapter.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="chapter.titlepage.before.verso"/>
+ <xsl:call-template name="chapter.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="chapter.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="chapter.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
+<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="appendixinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="appendixinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="appendix.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="appendix.titlepage.before.recto"/>
+ <xsl:call-template name="appendix.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="appendix.titlepage.before.verso"/>
+ <xsl:call-template name="appendix.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="appendix.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="appendix.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
+<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="section.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sectioninfo/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sectioninfo/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
+ <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="section.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="section.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="section.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="section.titlepage.before.recto"/>
+ <xsl:call-template name="section.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="section.titlepage.before.verso"/>
+ <xsl:call-template name="section.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="section.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="section.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="section.titlepage.recto.style">
+<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect1info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect1info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
+ <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect1.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect1.titlepage.before.recto"/>
+ <xsl:call-template name="sect1.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect1.titlepage.before.verso"/>
+ <xsl:call-template name="sect1.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect1.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect1.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect2info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect2info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
+ <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect2.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect2.titlepage.before.recto"/>
+ <xsl:call-template name="sect2.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect2.titlepage.before.verso"/>
+ <xsl:call-template name="sect2.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect2.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect2.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect3info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect3info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
+ <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect3.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect3.titlepage.before.recto"/>
+ <xsl:call-template name="sect3.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect3.titlepage.before.verso"/>
+ <xsl:call-template name="sect3.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect3.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect3.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect4info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect4info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
+ <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect4.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect4.titlepage.before.recto"/>
+ <xsl:call-template name="sect4.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect4.titlepage.before.verso"/>
+ <xsl:call-template name="sect4.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect4.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect4.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="sect5info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="sect5info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
+ <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="sect5.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="sect5.titlepage.before.recto"/>
+ <xsl:call-template name="sect5.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="sect5.titlepage.before.verso"/>
+ <xsl:call-template name="sect5.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="sect5.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="sect5.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
+<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="simplesectinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
+ <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="simplesect.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="simplesect.titlepage.before.recto"/>
+ <xsl:call-template name="simplesect.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="simplesect.titlepage.before.verso"/>
+ <xsl:call-template name="simplesect.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="simplesect.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
+<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.recto">
+ <div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="bibliographyinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="bibliography.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="bibliography.titlepage.before.recto"/>
+ <xsl:call-template name="bibliography.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="bibliography.titlepage.before.verso"/>
+ <xsl:call-template name="bibliography.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="bibliography.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
+<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.recto">
+ <div xsl:use-attribute-sets="glossary.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="glossaryinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="glossary.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="glossary.titlepage.before.recto"/>
+ <xsl:call-template name="glossary.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="glossary.titlepage.before.verso"/>
+ <xsl:call-template name="glossary.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="glossary.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="glossary.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="glossary.titlepage.recto.style">
+<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="index.titlepage.recto">
+ <div xsl:use-attribute-sets="index.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="indexinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="index.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="index.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="index.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="index.titlepage.before.recto"/>
+ <xsl:call-template name="index.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="index.titlepage.before.verso"/>
+ <xsl:call-template name="index.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="index.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="index.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="index.titlepage.recto.style">
+<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.recto">
+ <div xsl:use-attribute-sets="setindex.titlepage.recto.style">
+<xsl:call-template name="component.title">
+<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
+</xsl:call-template></div>
+ <xsl:choose>
+ <xsl:when test="setindexinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="setindex.titlepage">
+ <div class="titlepage">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="setindex.titlepage.before.recto"/>
+ <xsl:call-template name="setindex.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="setindex.titlepage.before.verso"/>
+ <xsl:call-template name="setindex.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="setindex.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="setindex.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="setindex.titlepage.recto.style">
+<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/html/titlepage.xsl b/docs/xsl-generic/html/titlepage.xsl
new file mode 100644
index 00000000..e2445516
--- /dev/null
+++ b/docs/xsl-generic/html/titlepage.xsl
@@ -0,0 +1,1031 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: titlepage.xsl 7253 2007-08-18 16:49:39Z mzjn $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:attribute-set name="book.titlepage.recto.style"/>
+<xsl:attribute-set name="book.titlepage.verso.style"/>
+
+<xsl:attribute-set name="article.titlepage.recto.style"/>
+<xsl:attribute-set name="article.titlepage.verso.style"/>
+
+<xsl:attribute-set name="set.titlepage.recto.style"/>
+<xsl:attribute-set name="set.titlepage.verso.style"/>
+
+<xsl:attribute-set name="part.titlepage.recto.style"/>
+<xsl:attribute-set name="part.titlepage.verso.style"/>
+
+<xsl:attribute-set name="partintro.titlepage.recto.style"/>
+<xsl:attribute-set name="partintro.titlepage.verso.style"/>
+
+<xsl:attribute-set name="reference.titlepage.recto.style"/>
+<xsl:attribute-set name="reference.titlepage.verso.style"/>
+
+<xsl:attribute-set name="refentry.titlepage.recto.style"/>
+<xsl:attribute-set name="refentry.titlepage.verso.style"/>
+
+<xsl:attribute-set name="dedication.titlepage.recto.style"/>
+<xsl:attribute-set name="dedication.titlepage.verso.style"/>
+
+<xsl:attribute-set name="preface.titlepage.recto.style"/>
+<xsl:attribute-set name="preface.titlepage.verso.style"/>
+
+<xsl:attribute-set name="chapter.titlepage.recto.style"/>
+<xsl:attribute-set name="chapter.titlepage.verso.style"/>
+
+<xsl:attribute-set name="appendix.titlepage.recto.style"/>
+<xsl:attribute-set name="appendix.titlepage.verso.style"/>
+
+<xsl:attribute-set name="bibliography.titlepage.recto.style"/>
+<xsl:attribute-set name="bibliography.titlepage.verso.style"/>
+
+<xsl:attribute-set name="glossary.titlepage.recto.style"/>
+<xsl:attribute-set name="glossary.titlepage.verso.style"/>
+
+<xsl:attribute-set name="index.titlepage.recto.style"/>
+<xsl:attribute-set name="index.titlepage.verso.style"/>
+
+<xsl:attribute-set name="setindex.titlepage.recto.style"/>
+<xsl:attribute-set name="setindex.titlepage.verso.style"/>
+
+<xsl:attribute-set name="section.titlepage.recto.style"/>
+<xsl:attribute-set name="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect1.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect1.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect2.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect2.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect3.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect3.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect4.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect4.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="sect5.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="sect5.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="simplesect.titlepage.recto.style"
+ use-attribute-sets="section.titlepage.recto.style"/>
+<xsl:attribute-set name="simplesect.titlepage.verso.style"
+ use-attribute-sets="section.titlepage.verso.style"/>
+
+<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/>
+<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/>
+
+<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/>
+<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="titlepage.mode">
+ <!-- if an element isn't found in this mode, try the default mode -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="abbrev" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="abstract" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$abstract.notitle.enabled = 0">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:call-template name="process.footnotes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="abstract/title" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="address" mode="titlepage.mode">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="affiliation" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="artpagenums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author|editor" mode="titlepage.mode">
+ <xsl:call-template name="credits.div"/>
+</xsl:template>
+
+<xsl:template name="credits.div">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="self::editor[position()=1] and not($editedby.enabled = 0)">
+ <h4 class="editedby"><xsl:call-template name="gentext.edited.by"/></h4>
+ </xsl:if>
+ <h3>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:choose>
+ <xsl:when test="orgname">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="person.name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h3>
+ <xsl:if test="not($contrib.inline.enabled = 0)">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ </xsl:if>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates mode="titlepage.mode" select="email"/>
+ <xsl:if test="not($blurb.on.titlepage.enabled = 0)">
+ <xsl:choose>
+ <xsl:when test="$contrib.inline.enabled = 0">
+ <xsl:apply-templates mode="titlepage.mode"
+ select="contrib|authorblurb|personblurb"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"
+ select="authorblurb|personblurb"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorblurb|personblurb" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorinitials" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="bibliomisc" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="bibliomset" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="collab" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="collabname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confgroup" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="confdates" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confsponsor" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="conftitle" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="confnum" mode="titlepage.mode">
+ <!-- suppress -->
+</xsl:template>
+
+<xsl:template match="contractnum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contractsponsor" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="not($contrib.inline.enabled = 0)">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span><xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <p><xsl:apply-templates mode="titlepage.mode"/></p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="copyright" mode="titlepage.mode">
+ <p>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="year" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="holder" mode="titlepage.mode">
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="titlepage.mode">
+ <h3>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h3>
+</xsl:template>
+
+<xsl:template match="corpcredit" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="corpname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="date" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="edition" mode="titlepage.mode">
+ <p>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Edition'"/>
+ </xsl:call-template>
+ </p>
+</xsl:template>
+
+<xsl:template match="email" mode="titlepage.mode">
+ <!-- use the normal e-mail handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="firstname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="graphic" mode="titlepage.mode">
+ <!-- use the normal graphic handling code -->
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="honorific" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="isbn" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issn" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="biblioid" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="itermset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="invpartnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="issuenum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="jobtitle" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="keywordset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="titlepage.mode">
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$generate.legalnotice.link != 0">
+
+ <!-- Compute name of legalnotice file -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename"/>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$file"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+
+ <a href="{$file}">
+ <xsl:copy-of select="$title"/>
+ </a>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content"/>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </body>
+ </html>
+ <xsl:value-of select="$chunk.append"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <a name="{$id}"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="legalnotice/title" mode="titlepage.mode">
+ <p class="legalnotice-title"><b><xsl:apply-templates/></b></p>
+</xsl:template>
+
+<xsl:template match="lineage" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modespec" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="orgdiv" mode="titlepage.mode">
+ <xsl:if test="preceding-sibling::*[1][self::orgname]">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="orgname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.mode">
+<xsl:choose>
+ <xsl:when test="not($othercredit.like.author.enabled = 0)">
+ <xsl:variable name="contrib" select="string(contrib)"/>
+ <xsl:choose>
+ <xsl:when test="contrib">
+ <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
+ <xsl:text>: </xsl:text>
+ <xsl:call-template name="person.name"/>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="person.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="credits.div"/>
+ </xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.othercredits">
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="othername" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pagenums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="printhistory" mode="titlepage.mode">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="productname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="productnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubdate" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="publisher" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="publishername" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pubsnumber" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="releaseinfo" mode="titlepage.mode">
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="class" select="local-name(.)"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="titlepage.mode">
+ <xsl:variable name="numcols">
+ <xsl:choose>
+ <xsl:when test=".//authorinitials|.//author">3</xsl:when>
+ <xsl:otherwise>2</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+ <xsl:variable name="title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">RevHistory</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="contents">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <table border="1" width="100%" summary="Revision history">
+ <tr>
+ <th align="left" valign="top" colspan="{$numcols}">
+ <b>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RevHistory'"/>
+ </xsl:call-template>
+ </b>
+ </th>
+ </tr>
+ <xsl:apply-templates mode="titlepage.mode">
+ <xsl:with-param name="numcols" select="$numcols"/>
+ </xsl:apply-templates>
+ </table>
+ </div>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$generate.revhistory.link != 0">
+
+ <!-- Compute name of revhistory file -->
+ <xsl:variable name="file">
+ <xsl:call-template name="ln.or.rh.filename">
+ <xsl:with-param name="is.ln" select="false()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:call-template name="make-relative-filename">
+ <xsl:with-param name="base.dir" select="$base.dir"/>
+ <xsl:with-param name="base.name" select="$file"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <a href="{$file}">
+ <xsl:copy-of select="$title"/>
+ </a>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="quiet" select="$chunk.quietly"/>
+ <xsl:with-param name="content">
+ <xsl:call-template name="user.preroot"/>
+ <html>
+ <head>
+ <xsl:call-template name="system.head.content"/>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="title">
+ <xsl:value-of select="$title"/>
+ <xsl:if test="../../title">
+ <xsl:value-of select="concat(' (', ../../title, ')')"/>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content"/>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:copy-of select="$contents"/>
+ </body>
+ </html>
+ <xsl:text>&#x0a;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="revhistory/revision" mode="titlepage.mode">
+ <xsl:param name="numcols" select="'3'"/>
+ <xsl:variable name="revnumber" select="revnumber"/>
+ <xsl:variable name="revdate" select="date"/>
+ <xsl:variable name="revauthor" select="authorinitials|author"/>
+ <xsl:variable name="revremark" select="revremark|revdescription"/>
+ <tr>
+ <td align="left">
+ <xsl:if test="$revnumber">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Revision'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/>
+ </xsl:if>
+ </td>
+ <td align="left">
+ <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/>
+ </td>
+ <xsl:choose>
+ <xsl:when test="$revauthor">
+ <td align="left">
+ <xsl:for-each select="$revauthor">
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </td>
+ </xsl:when>
+ <xsl:when test="$numcols &gt; 2">
+ <td>&#160;</td>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </tr>
+ <xsl:if test="$revremark">
+ <tr>
+ <td align="left" colspan="{$numcols}">
+ <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/>
+ </td>
+ </tr>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="revision/revnumber" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/date" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/authorinitials" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/author" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revremark" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="revision/revdescription" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="seriesvolnums" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="shortaffil" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subjectset" mode="titlepage.mode">
+</xsl:template>
+
+<xsl:template match="subtitle" mode="titlepage.mode">
+ <h2>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="surname" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<xsl:template match="title" mode="titlepage.mode">
+ <xsl:variable name="id">
+ <xsl:choose>
+ <!-- if title is in an *info wrapper, get the grandparent -->
+ <xsl:when test="contains(local-name(..), 'info')">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="../.."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <h1>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes = 0">
+ <a name="{$id}"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$show.revisionflag != 0 and @revisionflag">
+ <span class="{@revisionflag}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h1>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="titlepage.mode">
+ <!-- nop; title abbreviations don't belong on the title page! -->
+</xsl:template>
+
+<xsl:template match="volumenum" mode="titlepage.mode">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ <br/>
+ </span>
+</xsl:template>
+
+<!-- This template computes the filename for legalnotice and revhistory chunks -->
+<xsl:template name="ln.or.rh.filename">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="is.ln" select="true()"/>
+
+ <xsl:variable name="dbhtml-filename">
+ <xsl:call-template name="pi.dbhtml_filename">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- 1. If there is a dbhtml_filename PI, use that -->
+ <xsl:when test="$dbhtml-filename != ''">
+ <xsl:value-of select="$dbhtml-filename"/>
+ </xsl:when>
+ <xsl:when test="($node/@id or $node/@xml:id) and not($use.id.as.filename = 0)">
+ <!-- * 2. If this legalnotice/revhistory has an ID, then go ahead and use -->
+ <!-- * just the value of that ID as the basename for the file -->
+ <!-- * (that is, without prepending an "ln-" or "rh-" to it) -->
+ <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:when test="not ($node/@id or $node/@xml:id) or $use.id.as.filename = 0">
+ <!-- * 3. Otherwise, if this legalnotice/revhistory does not have an ID, or -->
+ <!-- * if $use.id.as.filename = 0 -->
+ <!-- * then we generate an ID... -->
+ <xsl:variable name="id">
+ <xsl:value-of select="generate-id($node)"/>
+ </xsl:variable>
+ <!-- * ...and then we take that generated ID, prepend a -->
+ <!-- * prefix to it, and use that as the basename for the file -->
+ <xsl:choose>
+ <xsl:when test="$is.ln">
+ <xsl:value-of select="concat('ln-',$id,$html.ext)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('rh-',$id,$html.ext)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/toc.xsl b/docs/xsl-generic/html/toc.xsl
new file mode 100644
index 00000000..bf1e62c7
--- /dev/null
+++ b/docs/xsl-generic/html/toc.xsl
@@ -0,0 +1,173 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: toc.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="toc">
+ <xsl:choose>
+ <xsl:when test="*">
+ <xsl:if test="$process.source.toc != 0">
+ <!-- if the toc isn't empty, process it -->
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$process.empty.source.toc != 0">
+ <xsl:choose>
+ <xsl:when test="parent::section
+ or parent::sect1
+ or parent::sect2
+ or parent::sect3
+ or parent::sect4
+ or parent::sect5">
+ <xsl:apply-templates select="parent::*"
+ mode="toc.for.section"/>
+ </xsl:when>
+ <xsl:when test="parent::article">
+ <xsl:apply-templates select="parent::*"
+ mode="toc.for.component"/>
+ </xsl:when>
+ <xsl:when test="parent::book
+ or parent::part">
+ <xsl:apply-templates select="parent::*"
+ mode="toc.for.division"/>
+ </xsl:when>
+ <xsl:when test="parent::set">
+ <xsl:apply-templates select="parent::*"
+ mode="toc.for.set"/>
+ </xsl:when>
+ <!-- there aren't any other contexts that allow toc -->
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>I don't know how to make a TOC in this context!</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tocpart|tocchap
+ |toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <xsl:variable name="sub-toc">
+ <xsl:if test="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dd>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"/>
+ </xsl:element>
+ </dd>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{$toc.list.type}">
+ <xsl:apply-templates select="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:apply-templates select="tocentry[position() != last()]"/>
+
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dt>
+ <xsl:apply-templates select="tocentry[position() = last()]"/>
+ </dt>
+ <xsl:copy-of select="$sub-toc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <li>
+ <xsl:apply-templates select="tocentry[position() = last()]"/>
+ <xsl:copy-of select="$sub-toc"/>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tocentry|tocfront|tocback">
+ <xsl:choose>
+ <xsl:when test="$toc.list.type = 'dl'">
+ <dt>
+ <xsl:call-template name="tocentry-content"/>
+ </dt>
+ </xsl:when>
+ <xsl:otherwise>
+ <li>
+ <xsl:call-template name="tocentry-content"/>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tocentry[position() = last()]" priority="2">
+ <xsl:call-template name="tocentry-content"/>
+</xsl:template>
+
+<xsl:template name="tocentry-content">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="@linkend">
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="toc.for.section">
+ <xsl:call-template name="section.toc"/>
+</xsl:template>
+
+<xsl:template match="*" mode="toc.for.component">
+ <xsl:call-template name="component.toc"/>
+</xsl:template>
+
+<xsl:template match="*" mode="toc.for.section">
+ <xsl:call-template name="section.toc"/>
+</xsl:template>
+
+<xsl:template match="*" mode="toc.for.division">
+ <xsl:call-template name="division.toc"/>
+</xsl:template>
+
+<xsl:template match="*" mode="toc.for.set">
+ <xsl:call-template name="set.toc"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="lot|lotentry">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/verbatim.xsl b/docs/xsl-generic/html/verbatim.xsl
new file mode 100644
index 00000000..13ad10ef
--- /dev/null
+++ b/docs/xsl-generic/html/verbatim.xsl
@@ -0,0 +1,376 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim"
+ xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="sverb xverb lxslt exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: verbatim.xsl 6946 2007-07-04 10:21:57Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:include href="../highlighting/common.xsl"/>
+<xsl:include href="highlight.xsl"/>
+
+<lxslt:component prefix="xverb"
+ functions="numberLines"/>
+
+<xsl:template match="programlisting|screen|synopsis">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:if test="$shade.verbatim != 0">
+ <xsl:message>
+ <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text>
+ <xsl:text>Use CSS instead,</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>for example: pre.</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> { background-color: #E0E0E0; }</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <xsl:variable name="rtf">
+ <xsl:call-template name="apply-highlighting"/>
+ </xsl:variable>
+ <pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="apply-highlighting"/>
+ </pre>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="literallayout">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:if test="$shade.verbatim != 0 and @class='monospaced'">
+ <xsl:message>
+ <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text>
+ <xsl:text>Use CSS instead,</xsl:text>
+ </xsl:message>
+ <xsl:message>
+ <xsl:text>for example: pre.</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> { background-color: #E0E0E0; }</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <xsl:choose>
+ <xsl:when test="@class='monospaced'">
+ <pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <p>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="@class='monospaced'">
+ <pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$rtf"/>
+ </pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <p>
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="address">
+ <xsl:param name="suppress-numbers" select="'0'"/>
+
+ <xsl:variable name="rtf">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$suppress-numbers = '0'
+ and @linenumbering = 'numbered'
+ and $use.extensions != '0'
+ and $linenumbering.extension != '0'">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <p>
+ <xsl:call-template name="number.rtf.lines">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <p>
+ <xsl:call-template name="make-verbatim">
+ <xsl:with-param name="rtf" select="$rtf"/>
+ </xsl:call-template>
+ </p>
+ </div>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="number.rtf.lines">
+ <xsl:param name="rtf" select="''"/>
+ <xsl:param name="pi.context" select="."/>
+
+ <!-- Save the global values -->
+ <xsl:variable name="global.linenumbering.everyNth"
+ select="$linenumbering.everyNth"/>
+
+ <xsl:variable name="global.linenumbering.separator"
+ select="$linenumbering.separator"/>
+
+ <xsl:variable name="global.linenumbering.width"
+ select="$linenumbering.width"/>
+
+ <!-- Extract the <?dbhtml linenumbering.*?> PI values -->
+ <xsl:variable name="pi.linenumbering.everyNth">
+ <xsl:call-template name="pi.dbhtml_linenumbering.everyNth">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.separator">
+ <xsl:call-template name="pi.dbhtml_linenumbering.separator">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="pi.linenumbering.width">
+ <xsl:call-template name="pi.dbhtml_linenumbering.width">
+ <xsl:with-param name="node" select="$pi.context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Construct the 'in-context' values -->
+ <xsl:variable name="linenumbering.everyNth">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.everyNth != ''">
+ <xsl:value-of select="$pi.linenumbering.everyNth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.everyNth"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.separator">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.separator != ''">
+ <xsl:value-of select="$pi.linenumbering.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.separator"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.width">
+ <xsl:choose>
+ <xsl:when test="$pi.linenumbering.width != ''">
+ <xsl:value-of select="$pi.linenumbering.width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$global.linenumbering.width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="linenumbering.startinglinenumber">
+ <xsl:choose>
+ <xsl:when test="$pi.context/@startinglinenumber">
+ <xsl:value-of select="$pi.context/@startinglinenumber"/>
+ </xsl:when>
+ <xsl:when test="$pi.context/@continuation='continues'">
+ <xsl:variable name="lastLine">
+ <xsl:choose>
+ <xsl:when test="$pi.context/self::programlisting">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::programlisting[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::screen">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::screen[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::literallayout">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::literallayout[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::address">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::address[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$pi.context/self::synopsis">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings"
+ select="preceding::synopsis[@linenumbering='numbered']"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected verbatim environment: </xsl:text>
+ <xsl:value-of select="local-name($pi.context)"/>
+ </xsl:message>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$lastLine + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('sverb:numberLines')">
+ <xsl:copy-of select="sverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:when test="function-available('xverb:numberLines')">
+ <xsl:copy-of select="xverb:numberLines($rtf)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No numberLines function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="make-verbatim">
+ <xsl:param name="rtf"/>
+
+ <!-- I want to make this RTF verbatim. There are two possibilities: either
+ I have access to the exsl:node-set extension function and I can "do it right"
+ or I have to rely on CSS. -->
+
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')">
+ <xsl:apply-templates select="exsl:node-set($rtf)" mode="make.verbatim.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span style="white-space: pre;">
+ <xsl:copy-of select="$rtf"/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================== -->
+
+<xsl:template name="lastLineNumber">
+ <xsl:param name="listings"/>
+ <xsl:param name="number" select="0"/>
+
+ <xsl:variable name="lines">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="string($listings[1])"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($listings)">
+ <xsl:value-of select="$number"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@startinglinenumber">
+ <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/>
+ </xsl:when>
+ <xsl:when test="$listings[1]/@continuation='continues'">
+ <xsl:call-template name="lastLineNumber">
+ <xsl:with-param name="listings" select="listings[position() &gt; 1]"/>
+ <xsl:with-param name="number" select="$number + $lines"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lines"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="countLines">
+ <xsl:param name="listing"/>
+ <xsl:param name="count" select="1"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($listing, '&#10;')">
+ <xsl:call-template name="countLines">
+ <xsl:with-param name="listing" select="substring-after($listing, '&#10;')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/html/xref.xsl b/docs/xsl-generic/html/xref.xsl
new file mode 100644
index 00000000..7c8dd68d
--- /dev/null
+++ b/docs/xsl-generic/html/xref.xsl
@@ -0,0 +1,1348 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:xlink='http://www.w3.org/1999/xlink'
+ exclude-result-prefixes="suwl exsl xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: xref.xsl 7107 2007-07-22 10:22:06Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- Use internal variable for olink xlink role for consistency -->
+<xsl:variable
+ name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="anchor">
+ <xsl:call-template name="anchor"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="xref" name="xref">
+ <xsl:param name="xhref" select="@xlink:href"/>
+ <!-- is the @xlink:href a local idref link? -->
+ <xsl:param name="xlink.idref">
+ <xsl:if test="starts-with($xhref,'#')
+ and (not(contains($xhref,'&#40;'))
+ or starts-with($xhref, '#xpointer&#40;id&#40;'))">
+ <xsl:call-template name="xpointer.idref">
+ <xsl:with-param name="xpointer" select="$xhref"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/>
+ <xsl:param name="linkend.targets" select="key('id',@linkend)"/>
+ <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/>
+
+ <xsl:variable name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle)
+ and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="content">
+ <xsl:choose>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$target">
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ </xsl:apply-templates>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>ERROR: xref linking to </xsl:text>
+ <xsl:value-of select="@linkend|@xlink:href"/>
+ <xsl:text> has no generated link text.</xsl:text>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- biblioref handled largely like an xref -->
+<!-- To be done: add support for begin, end, and units attributes -->
+<xsl:template match="biblioref">
+ <xsl:variable name="targets" select="key('id',@linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="refelem" select="local-name($target)"/>
+
+ <xsl:call-template name="check.id.unique">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="count($target) = 0">
+ <xsl:message>
+ <xsl:text>XRef to nonexistent id: </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="@endterm">
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>???</xsl:text>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="$target/@xreflabel">
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+ </xsl:if>
+
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$target/title or $target/*/title">
+ <xsl:attribute name="title">
+ <xsl:apply-templates select="$target" mode="xref-title"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="$target" mode="xref-to">
+ <xsl:with-param name="referrer" select="."/>
+ <xsl:with-param name="xrefstyle">
+ <xsl:choose>
+ <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
+ <xsl:value-of select="@role"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@xrefstyle"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </a>
+
+ <xsl:if test="not(parent::citation)">
+ <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="endterm">
+ <!-- Process the children of the endterm element -->
+ <xsl:variable name="endterm">
+ <xsl:apply-templates select="child::node()"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')">
+ <xsl:apply-templates select="exsl:node-set($endterm)" mode="remove-ids"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="remove-ids">
+ <xsl:choose>
+ <!-- handle html or xhtml -->
+ <xsl:when test="local-name(.) = 'a'
+ and (namespace-uri(.) = ''
+ or namespace-uri(.) = 'http://www.w3.org/1999/xhtml')">
+ <xsl:choose>
+ <xsl:when test="(@name and count(@*) = 1)
+ or (@id and count(@*) = 1)
+ or (@xml:id and count(@*) = 1)
+ or (@xml:id and @name and count(@*) = 2)
+ or (@id and @name and count(@*) = 2)">
+ <xsl:message>suppress anchor</xsl:message>
+ <!-- suppress the whole thing -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) != 'name' and local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of
+ select="local-name(.)"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:copy>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) != 'id'">
+ <xsl:copy/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>removing <xsl:value-of
+ select="local-name(.)"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="remove-ids"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="xref-to-prefix"/>
+<xsl:template match="*" mode="xref-to-suffix"/>
+
+<xsl:template match="*" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:if test="$verbose">
+ <xsl:message>
+ <xsl:text>Don't know what gentext to create for xref to: "</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>", ("</xsl:text>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ <xsl:text>")</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:text>???</xsl:text>
+</xsl:template>
+
+<xsl:template match="title" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- if you xref to a title, xref to the parent... -->
+ <xsl:choose>
+ <!-- FIXME: how reliable is this? -->
+ <xsl:when test="contains(local-name(parent::*), 'info')">
+ <xsl:apply-templates select="parent::*[2]" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="parent::*" mode="xref-to">
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset
+ |biblioset|blockquote|calloutlist|caution|colophon
+ |constraintdef|formalpara|glossdiv|important|indexdiv
+ |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain
+ |msgrel|msgset|msgsub|note|orderedlist|partintro
+ |productionset|qandadiv|refsynopsisdiv|segmentedlist
+ |set|setindex|sidebar|tip|toc|variablelist|warning"
+ mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- catch-all for things with (possibly optional) titles -->
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="author|editor|othercredit|personname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="person.name.list"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table|equation" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="procedure" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="task" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis" mode="xref-to">
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsis" mode="xref-to">
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+</xsl:template>
+
+<xsl:template match="dedication|preface|chapter|appendix|article" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="bibliography" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix">
+ <xsl:text>[</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix">
+ <xsl:text>]</xsl:text>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:choose>
+ <xsl:when test="string(.) = ''">
+ <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
+ <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
+ <xsl:variable name="entry" select="$bib/bibliography/
+ *[@id=$id or @xml:id=$id][1]"/>
+ <xsl:choose>
+ <xsl:when test="$entry">
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name($entry/*[1]) = 'abbrev'">
+ <xsl:apply-templates select="$entry/*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No bibliography entry: </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> found in </xsl:text>
+ <xsl:value-of select="$bibliography.collection"/>
+ </xsl:message>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="bibliography" count="biblioentry|bibliomixed"
+ level="any" format="1"/>
+ </xsl:when>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossary" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$glossentry.show.acronym = 'primary'">
+ <xsl:choose>
+ <xsl:when test="acronym|abbrev">
+ <xsl:apply-templates select="(acronym|abbrev)[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="glossterm[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossterm" mode="xref-to">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="index" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="listitem" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="section|simplesect
+ |sect1|sect2|sect3|sect4|sect5
+ |refsect1|refsect2|refsect3|refsection" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- FIXME: What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="bridgehead" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ <!-- FIXME: What about "in Chapter X"? -->
+</xsl:template>
+
+<xsl:template match="qandaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandadiv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="qandaentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="question[1]" mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="question|answer" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:apply-templates select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refnamediv/refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="refmeta/manvolnum"/>
+</xsl:template>
+
+<xsl:template match="refnamediv" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="refname[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="refname" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates mode="xref-to"/>
+</xsl:template>
+
+<xsl:template match="step" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="term[1]" mode="xref-to">
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="varlistentry/term" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <!-- to avoid the comma that will be generated if there are several terms -->
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="co" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:apply-templates select="." mode="callout-bug"/>
+</xsl:template>
+
+<xsl:template match="area|areaset" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+
+ <xsl:call-template name="callout-bug">
+ <xsl:with-param name="conum">
+ <xsl:apply-templates select="." mode="conumber"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="book" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:apply-templates select="." mode="object.xref.markup">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="para" mode="xref-to">
+ <xsl:param name="referrer"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="verbose" select="1"/>
+
+ <xsl:variable name="context" select="(ancestor::simplesect
+ |ancestor::section
+ |ancestor::sect1
+ |ancestor::sect2
+ |ancestor::sect3
+ |ancestor::sect4
+ |ancestor::sect5
+ |ancestor::refsection
+ |ancestor::refsect1
+ |ancestor::refsect2
+ |ancestor::refsect3
+ |ancestor::chapter
+ |ancestor::appendix
+ |ancestor::preface
+ |ancestor::partintro
+ |ancestor::dedication
+ |ancestor::colophon
+ |ancestor::bibliography
+ |ancestor::index
+ |ancestor::glossary
+ |ancestor::glossentry
+ |ancestor::listitem
+ |ancestor::varlistentry)[last()]"/>
+
+ <xsl:apply-templates select="$context" mode="xref-to">
+ <xsl:with-param name="purpose" select="'xref'"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="author" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:call-template name="person.name"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:call-template name="person.name.list"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsis" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="xref-title">
+ <!-- handles both biblioentry and bibliomixed -->
+ <xsl:variable name="title">
+ <xsl:text>[</xsl:text>
+ <xsl:choose>
+ <xsl:when test="local-name(*[1]) = 'abbrev'">
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>]</xsl:text>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<xsl:template match="step" mode="xref-title">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="step[not(./title)]" mode="title.markup">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Step'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="." mode="number"/>
+</xsl:template>
+
+<xsl:template match="co" mode="xref-title">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$title"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="link" name="link">
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="a.target"/>
+ <xsl:param name="xhref" select="@xlink:href"/>
+
+ <xsl:variable name="content">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="count(child::node()) &gt; 0">
+ <!-- If it has content, use it -->
+ <xsl:apply-templates/>
+ </xsl:when>
+ <!-- else look for an endterm -->
+ <xsl:when test="@endterm">
+ <xsl:variable name="etargets" select="key('id',@endterm)"/>
+ <xsl:variable name="etarget" select="$etargets[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($etarget) = 0">
+ <xsl:message>
+ <xsl:value-of select="count($etargets)"/>
+ <xsl:text>Endterm points to nonexistent ID: </xsl:text>
+ <xsl:value-of select="@endterm"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$etarget" mode="endterm"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- Use the xlink:href if no other text -->
+ <xsl:when test="@xlink:href">
+ <xsl:value-of select="@xlink:href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Link element has no content and no Endterm. </xsl:text>
+ <xsl:text>Nothing to show in the link to </xsl:text>
+ <xsl:value-of select="(@xlink:href|@linkend)[1]"/>
+ </xsl:message>
+ <xsl:text>???</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="a.target" select="$a.target"/>
+ <xsl:with-param name="xhref" select="$xhref"/>
+ </xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="ulink" name="ulink">
+ <xsl:param name="url" select="@url"/>
+ <xsl:variable name="link">
+ <a>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="@id or @xml:id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="(@id|@xml:id)[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href"><xsl:value-of select="$url"/></xsl:attribute>
+ <xsl:if test="$ulink.target != ''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="$url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('suwl:unwrapLinks')">
+ <xsl:copy-of select="suwl:unwrapLinks($link)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="olink" name="olink">
+ <!-- olink content may be passed in from xlink olink -->
+ <xsl:param name="content" select="NOTANELEMENT"/>
+
+ <xsl:call-template name="anchor"/>
+
+ <xsl:variable name="localinfo" select="@localinfo"/>
+
+ <xsl:choose>
+ <!-- olinks resolved by stylesheet and target database -->
+ <xsl:when test="@targetdoc or @targetptr or
+ (@xlink:role=$xolink.role and
+ contains(@xlink:href, '#') )" >
+
+ <xsl:variable name="targetdoc.att">
+ <xsl:choose>
+ <xsl:when test="@targetdoc != ''">
+ <xsl:value-of select="@targetdoc"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and
+ contains(@xlink:href, '#')" >
+ <xsl:value-of select="substring-before(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="targetptr.att">
+ <xsl:choose>
+ <xsl:when test="@targetptr != ''">
+ <xsl:value-of select="@targetptr"/>
+ </xsl:when>
+ <xsl:when test="@xlink:role=$xolink.role and
+ contains(@xlink:href, '#')" >
+ <xsl:value-of select="substring-after(@xlink:href, '#')"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.lang">
+ <xsl:call-template name="l10n.language">
+ <xsl:with-param name="xref-context" select="true()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database.filename">
+ <xsl:call-template name="select.target.database">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="target.database"
+ select="document($target.database.filename,/)"/>
+
+ <xsl:if test="$olink.debug != 0">
+ <xsl:message>
+ <xsl:text>Olink debug: root element of target.database '</xsl:text>
+ <xsl:value-of select="$target.database.filename"/>
+ <xsl:text>' is '</xsl:text>
+ <xsl:value-of select="local-name($target.database/*[1])"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="olink.key">
+ <xsl:call-template name="select.olink.key">
+ <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
+ <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="string-length($olink.key) = 0">
+ <xsl:message>
+ <xsl:text>Error: unresolved olink: </xsl:text>
+ <xsl:text>targetdoc/targetptr = '</xsl:text>
+ <xsl:value-of select="$targetdoc.att"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$targetptr.att"/>
+ <xsl:text>'.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="make.olink.href">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="hottext">
+ <xsl:choose>
+ <xsl:when test="$content">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink.hottext">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="olink.docname.citation">
+ <xsl:call-template name="olink.document.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="olink.page.citation">
+ <xsl:call-template name="olink.page.citation">
+ <xsl:with-param name="olink.key" select="$olink.key"/>
+ <xsl:with-param name="target.database" select="$target.database"/>
+ <xsl:with-param name="olink.lang" select="$olink.lang"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$hottext"/>
+ </a>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="olink"><xsl:copy-of select="$hottext"/></span>
+ <xsl:copy-of select="$olink.page.citation"/>
+ <xsl:copy-of select="$olink.docname.citation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+
+ <!-- Or use old olink mechanism -->
+ <xsl:otherwise>
+ <xsl:variable name="href">
+ <xsl:choose>
+ <xsl:when test="@linkmode">
+ <!-- use the linkmode to get the base URI, use localinfo as fragid -->
+ <xsl:variable name="modespec" select="key('id',@linkmode)"/>
+ <xsl:if test="count($modespec) != 1
+ or local-name($modespec) != 'modespec'">
+ <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message>
+ </xsl:if>
+ <xsl:value-of select="$modespec"/>
+ <xsl:if test="@localinfo">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="@type = 'href'">
+ <xsl:call-template name="olink.outline">
+ <xsl:with-param name="outline.base.uri"
+ select="unparsed-entity-uri(@targetdocent)"/>
+ <xsl:with-param name="localinfo" select="@localinfo"/>
+ <xsl:with-param name="return" select="'href'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$olink.resolver"/>
+ <xsl:text>?</xsl:text>
+ <xsl:value-of select="$olink.sysid"/>
+ <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/>
+ <!-- XSL gives no access to the public identifier (grumble...) -->
+ <xsl:if test="@localinfo">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:value-of select="$olink.fragid"/>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <a href="{$href}">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="olink.hottext"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="olink.hottext"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="pagenumber.markup">
+ <!-- no-op in HTML -->
+</xsl:template>
+
+
+<xsl:template name="olink.outline">
+ <xsl:param name="outline.base.uri"/>
+ <xsl:param name="localinfo"/>
+ <xsl:param name="return" select="href"/>
+
+ <xsl:variable name="outline-file"
+ select="concat($outline.base.uri,
+ $olink.outline.ext)"/>
+
+ <xsl:variable name="outline" select="document($outline-file,.)/div"/>
+
+ <xsl:variable name="node-href">
+ <xsl:choose>
+ <xsl:when test="$localinfo != ''">
+ <xsl:variable name="node" select="$outline//
+ *[@id=$localinfo or @xml:id=$localinfo]"/>
+ <xsl:value-of select="$node/@href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outline/@href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="node-xref">
+ <xsl:choose>
+ <xsl:when test="$localinfo != ''">
+ <xsl:variable name="node" select="$outline//
+ *[@id=$localinfo or @xml:id=$localinfo]"/>
+ <xsl:copy-of select="$node/xref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outline/xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$return = 'href'">
+ <xsl:value-of select="$node-href"/>
+ </xsl:when>
+ <xsl:when test="$return = 'xref'">
+ <xsl:value-of select="$node-xref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$node-xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="xref.xreflabel">
+ <!-- called to process an xreflabel...you might use this to make -->
+ <!-- xreflabels come out in the right font for different targets, -->
+ <!-- for example. -->
+ <xsl:param name="target" select="."/>
+ <xsl:value-of select="$target/@xreflabel"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="title" mode="xref">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="command" mode="xref">
+ <xsl:call-template name="inline.boldseq"/>
+</xsl:template>
+
+<xsl:template match="function" mode="xref">
+ <xsl:call-template name="inline.monoseq"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <!-- FIXME: what about the case where titleabbrev is inside the info? -->
+ <xsl:when test="$purpose = 'xref' and titleabbrev">
+ <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="chapter|appendix" mode="insert.title.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="title"/>
+
+ <xsl:choose>
+ <xsl:when test="$purpose = 'xref'">
+ <i>
+ <xsl:copy-of select="$title"/>
+ </i>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.subtitle.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="subtitle"/>
+
+ <xsl:copy-of select="$subtitle"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.label.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="label"/>
+
+ <xsl:copy-of select="$label"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.pagenumber.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="pagenumber"/>
+
+ <xsl:copy-of select="$pagenumber"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.direction.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="direction"/>
+
+ <xsl:copy-of select="$direction"/>
+</xsl:template>
+
+<xsl:template match="*" mode="insert.olink.docname.markup">
+ <xsl:param name="purpose"/>
+ <xsl:param name="xrefstyle"/>
+ <xsl:param name="docname"/>
+
+ <span class="olinkdocname">
+ <xsl:copy-of select="$docname"/>
+ </span>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/lib/lib.xsl b/docs/xsl-generic/lib/lib.xsl
new file mode 100644
index 00000000..5eee4862
--- /dev/null
+++ b/docs/xsl-generic/lib/lib.xsl
@@ -0,0 +1,480 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!-- ********************************************************************
+ $Id: lib.xweb 7102 2007-07-20 15:35:24Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ This module implements DTD-independent functions
+
+ ******************************************************************** -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:template name="dot.count">
+ <!-- Returns the number of "." characters in a string -->
+ <xsl:param name="string"/>
+ <xsl:param name="count" select="0"/>
+ <xsl:choose>
+ <xsl:when test="contains($string, '.')">
+ <xsl:call-template name="dot.count">
+ <xsl:with-param name="string" select="substring-after($string, '.')"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="copy-string">
+ <!-- returns 'count' copies of 'string' -->
+ <xsl:param name="string"/>
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="result"/>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="count" select="$count - 1"/>
+ <xsl:with-param name="result">
+ <xsl:value-of select="$result"/>
+ <xsl:value-of select="$string"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$result"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="string.subst">
+ <xsl:param name="string"/>
+ <xsl:param name="target"/>
+ <xsl:param name="replacement"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, $target)">
+ <xsl:variable name="rest">
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="substring-after($string, $target)"/>
+ <xsl:with-param name="target" select="$target"/>
+ <xsl:with-param name="replacement" select="$replacement"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="concat(substring-before($string, $target), $replacement, $rest)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="xpointer.idref">
+ <xsl:param name="xpointer">http://...</xsl:param>
+ <xsl:choose>
+ <xsl:when test="starts-with($xpointer, '#xpointer(id(')">
+ <xsl:variable name="rest" select="substring-after($xpointer, '#xpointer(id(')"/>
+ <xsl:variable name="quote" select="substring($rest, 1, 1)"/>
+ <xsl:value-of select="substring-before(substring-after($xpointer, $quote), $quote)"/>
+ </xsl:when>
+ <xsl:when test="starts-with($xpointer, '#')">
+ <xsl:value-of select="substring-after($xpointer, '#')"/>
+ </xsl:when>
+ <!-- otherwise it's a pointer to some other document -->
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="length-magnitude">
+ <xsl:param name="length" select="'0pt'"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($length) = 0"/>
+ <xsl:when test="substring($length,1,1) = '0' or substring($length,1,1) = '1' or substring($length,1,1) = '2' or substring($length,1,1) = '3' or substring($length,1,1) = '4' or substring($length,1,1) = '5' or substring($length,1,1) = '6' or substring($length,1,1) = '7' or substring($length,1,1) = '8' or substring($length,1,1) = '9' or substring($length,1,1) = '.'">
+ <xsl:value-of select="substring($length,1,1)"/>
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="substring($length,2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="length-units">
+ <xsl:param name="length" select="'0pt'"/>
+ <xsl:param name="default.units" select="'px'"/>
+ <xsl:variable name="magnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="$length"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="units">
+ <xsl:value-of select="substring($length, string-length($magnitude)+1)"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = ''">
+ <xsl:value-of select="$default.units"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$units"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="length-spec">
+ <xsl:param name="length" select="'0pt'"/>
+ <xsl:param name="default.units" select="'px'"/>
+
+ <xsl:variable name="magnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="$length"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="units">
+ <xsl:value-of select="substring($length, string-length($magnitude)+1)"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$magnitude"/>
+ <xsl:choose>
+ <xsl:when test="$units='cm' or $units='mm' or $units='in' or $units='pt' or $units='pc' or $units='px' or $units='em'">
+ <xsl:value-of select="$units"/>
+ </xsl:when>
+ <xsl:when test="$units = ''">
+ <xsl:value-of select="$default.units"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized unit of measure: </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="length-in-points">
+ <xsl:param name="length" select="'0pt'"/>
+ <xsl:param name="em.size" select="10"/>
+ <xsl:param name="pixels.per.inch" select="90"/>
+
+ <xsl:variable name="magnitude">
+ <xsl:call-template name="length-magnitude">
+ <xsl:with-param name="length" select="$length"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="units">
+ <xsl:value-of select="substring($length, string-length($magnitude)+1)"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$units = 'pt'">
+ <xsl:value-of select="$magnitude"/>
+ </xsl:when>
+ <xsl:when test="$units = 'cm'">
+ <xsl:value-of select="$magnitude div 2.54 * 72.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'mm'">
+ <xsl:value-of select="$magnitude div 25.4 * 72.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'in'">
+ <xsl:value-of select="$magnitude * 72.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'pc'">
+ <xsl:value-of select="$magnitude * 12.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'px'">
+ <xsl:value-of select="$magnitude div $pixels.per.inch * 72.0"/>
+ </xsl:when>
+ <xsl:when test="$units = 'em'">
+ <xsl:value-of select="$magnitude * $em.size"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized unit of measure: </xsl:text>
+ <xsl:value-of select="$units"/>
+ <xsl:text>.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="pi-attribute">
+ <xsl:param name="pis" select="processing-instruction('BOGUS_PI')"/>
+ <xsl:param name="attribute">filename</xsl:param>
+ <xsl:param name="count">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count&gt;count($pis)">
+ <!-- not found -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="pi">
+ <xsl:value-of select="$pis[$count]"/>
+ </xsl:variable>
+ <xsl:variable name="pivalue">
+ <xsl:value-of select="concat(' ', normalize-space($pi))"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="contains($pivalue,concat(' ', $attribute, '='))">
+ <xsl:variable name="rest" select="substring-after($pivalue,concat(' ', $attribute,'='))"/>
+ <xsl:variable name="quote" select="substring($rest,1,1)"/>
+ <xsl:value-of select="substring-before(substring($rest,2),$quote)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="pi-attribute">
+ <xsl:with-param name="pis" select="$pis"/>
+ <xsl:with-param name="attribute" select="$attribute"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="lookup.key">
+ <xsl:param name="key" select="''"/>
+ <xsl:param name="table" select="''"/>
+
+ <xsl:if test="contains($table, ' ')">
+ <xsl:choose>
+ <xsl:when test="substring-before($table, ' ') = $key">
+ <xsl:variable name="rest" select="substring-after($table, ' ')"/>
+ <xsl:choose>
+ <xsl:when test="contains($rest, ' ')">
+ <xsl:value-of select="substring-before($rest, ' ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="lookup.key">
+ <xsl:with-param name="key" select="$key"/>
+ <xsl:with-param name="table" select="substring-after(substring-after($table,' '), ' ')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+<xsl:template name="xpath.location">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="path" select="''"/>
+
+ <xsl:variable name="next.path">
+ <xsl:value-of select="local-name($node)"/>
+ <xsl:if test="$path != ''">/</xsl:if>
+ <xsl:value-of select="$path"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$node/parent::*">
+ <xsl:call-template name="xpath.location">
+ <xsl:with-param name="node" select="$node/parent::*"/>
+ <xsl:with-param name="path" select="$next.path"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$next.path"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="comment-escape-string">
+ <xsl:param name="string" select="''"/>
+
+ <xsl:if test="starts-with($string, '-')">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:call-template name="comment-escape-string.recursive">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+
+ <xsl:if test="substring($string, string-length($string), 1) = '-'">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+</xsl:template>
+<xsl:template name="comment-escape-string.recursive">
+ <xsl:param name="string" select="''"/>
+ <xsl:choose>
+ <xsl:when test="contains($string, '--')">
+ <xsl:value-of select="substring-before($string, '--')"/>
+ <xsl:value-of select="'- -'"/>
+ <xsl:call-template name="comment-escape-string.recursive">
+ <xsl:with-param name="string" select="substring-after($string, '--')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+ <xsl:template name="str.tokenize.keep.delimiters">
+ <xsl:param name="string" select="''"/>
+ <xsl:param name="delimiters" select="' '"/>
+ <xsl:choose>
+ <xsl:when test="not($string)"/>
+ <xsl:when test="not($delimiters)">
+ <xsl:call-template name="str.tokenize.keep.delimiters-characters">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="delimiters" select="$delimiters"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template name="str.tokenize.keep.delimiters-characters">
+ <xsl:param name="string"/>
+ <xsl:if test="$string">
+ <ssb:token xmlns:ssb="http://sideshowbarker.net/ns"><xsl:value-of select="substring($string, 1, 1)"/></ssb:token>
+ <xsl:call-template name="str.tokenize.keep.delimiters-characters">
+ <xsl:with-param name="string" select="substring($string, 2)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:param name="string"/>
+ <xsl:param name="delimiters"/>
+ <xsl:variable name="delimiter" select="substring($delimiters, 1, 1)"/>
+ <xsl:choose>
+ <xsl:when test="not($delimiter)">
+ <ssb:token xmlns:ssb="http://sideshowbarker.net/ns"><xsl:value-of select="$string"/></ssb:token>
+ </xsl:when>
+ <xsl:when test="contains($string, $delimiter)">
+ <xsl:if test="not(starts-with($string, $delimiter))">
+ <xsl:call-template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:with-param name="string" select="substring-before($string, $delimiter)"/>
+ <xsl:with-param name="delimiters" select="substring($delimiters, 2)"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- output each delimiter -->
+ <xsl:value-of select="$delimiter"/>
+ <xsl:call-template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:with-param name="string" select="substring-after($string, $delimiter)"/>
+ <xsl:with-param name="delimiters" select="$delimiters"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str.tokenize.keep.delimiters-delimiters">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="delimiters" select="substring($delimiters, 2)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template name="apply-string-subst-map">
+ <xsl:param name="content"/>
+ <xsl:param name="map.contents"/>
+ <xsl:variable name="replaced_text">
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target" select="$map.contents[1]/@oldstring"/>
+ <xsl:with-param name="replacement" select="$map.contents[1]/@newstring"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$map.contents[2]">
+ <xsl:call-template name="apply-string-subst-map">
+ <xsl:with-param name="content" select="$replaced_text"/>
+ <xsl:with-param name="map.contents" select="$map.contents[position() &gt; 1]"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$replaced_text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+<xsl:template name="count.uri.path.depth">
+ <xsl:param name="filename" select="''"/>
+ <xsl:param name="count" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($filename, '/')">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="substring-after($filename, '/')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="trim.common.uri.paths">
+ <xsl:param name="uriA" select="''"/>
+ <xsl:param name="uriB" select="''"/>
+ <xsl:param name="return" select="'A'"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($uriA, '/') and contains($uriB, '/') and substring-before($uriA, '/') = substring-before($uriB, '/')">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="substring-after($uriA, '/')"/>
+ <xsl:with-param name="uriB" select="substring-after($uriB, '/')"/>
+ <xsl:with-param name="return" select="$return"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$return = 'A'">
+ <xsl:value-of select="$uriA"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$uriB"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+ <xsl:template name="trim.text">
+ <xsl:param name="contents" select="."/>
+ <xsl:variable name="contents-left-trimmed">
+ <xsl:call-template name="trim-left">
+ <xsl:with-param name="contents" select="$contents"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="contents-trimmed">
+ <xsl:call-template name="trim-right">
+ <xsl:with-param name="contents" select="$contents-left-trimmed"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$contents-trimmed"/>
+ </xsl:template>
+
+ <xsl:template name="trim-left">
+ <xsl:param name="contents"/>
+ <xsl:choose>
+ <xsl:when test="starts-with($contents,'&#10;') or starts-with($contents,'&#13;') or starts-with($contents,' ') or starts-with($contents,'&#9;')">
+ <xsl:call-template name="trim-left">
+ <xsl:with-param name="contents" select="substring($contents, 2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="trim-right">
+ <xsl:param name="contents"/>
+ <xsl:variable name="last-char">
+ <xsl:value-of select="substring($contents, string-length($contents), 1)"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="($last-char = '&#10;') or ($last-char = '&#13;') or ($last-char = ' ') or ($last-char = '&#9;')">
+ <xsl:call-template name="trim-right">
+ <xsl:with-param name="contents" select="substring($contents, 1, string-length($contents) - 1)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/block.xsl b/docs/xsl-generic/manpages/block.xsl
new file mode 100644
index 00000000..efee63be
--- /dev/null
+++ b/docs/xsl-generic/manpages/block.xsl
@@ -0,0 +1,296 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: block.xsl 6843 2007-06-20 12:21:13Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="caution|important|note|tip|warning">
+ <xsl:call-template name="nested-section-title"/>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="formalpara">
+ <xsl:variable name="title.wrapper">
+ <xsl:value-of select="normalize-space(title[1])"/>
+ </xsl:variable>
+ <xsl:text>.PP&#10;</xsl:text>
+ <!-- * don't put linebreak after head; instead render it as a "run in" -->
+ <!-- * head, that is, inline, with a period and space following it -->
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($title.wrapper)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>. </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="formalpara/para">
+ <xsl:call-template name="mixed-block"/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="para">
+ <!-- * FIXME: Need to extract the ancestor::footnote, etc. checking and -->
+ <!-- * move to named template so that we can call it from templates for -->
+ <!-- * other block elements also -->
+ <xsl:choose>
+ <!-- * If a para is a descendant of a footnote, etc., then indent it -->
+ <!-- * (unless it is the first child, in which case don't generate -->
+ <!-- * anything at all to mark its start). -->
+ <!-- * FIXME: *blurb checking should not be munged in here the way -->
+ <!-- * it currently is; this probably breaks blurb indenting. -->
+ <xsl:when test="ancestor::footnote or
+ ancestor::annotation or
+ ancestor::authorblurb or
+ ancestor::personblurb">
+ <xsl:if test="preceding-sibling::*[not(name() ='')]">
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS 4n</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.PP</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="mixed-block"/>
+ <xsl:if test="ancestor::footnote or
+ ancestor::annotation or
+ ancestor::authorblurb or
+ ancestor::personblurb">
+ <xsl:if test="preceding-sibling::*[not(name() ='')]">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RE</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="simpara">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="not(ancestor::authorblurb) and
+ not(ancestor::personblurb)">
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * Yes, address, synopsis, and funcsynopsisinfo are verbatim environments. -->
+<xsl:template match="literallayout|programlisting|screen|
+ address|synopsis|funcsynopsisinfo">
+ <xsl:param name="indent">
+ <!-- * Only indent this verbatim if $man.indent.verbatims is -->
+ <!-- * non-zero and it is not a child of a *synopsis element -->
+ <xsl:if test="not($man.indent.verbatims = 0) and
+ not(substring(local-name(..),
+ string-length(local-name(..))-7) = 'synopsis')">
+ <xsl:text>Yes</xsl:text>
+ </xsl:if>
+ </xsl:param>
+
+ <xsl:choose>
+ <!-- * Check to see if this verbatim item is within a parent element that -->
+ <!-- * allows mixed content. -->
+ <!-- * -->
+ <!-- * If it is within a mixed-content parent, then a line space is -->
+ <!-- * already added before it by the mixed-block template, so we don't -->
+ <!-- * need to add one here. -->
+ <!-- * -->
+ <!-- * If it is not within a mixed-content parent, then we need to add a -->
+ <!-- * line space before it. -->
+ <xsl:when test="parent::caption|parent::entry|parent::para|
+ parent::td|parent::th" /> <!-- do nothing -->
+ <xsl:otherwise>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$indent = 'Yes'">
+ <!-- * start indented section -->
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($man.indent.width = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$man.indent.width"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="self::funcsynopsisinfo">
+ <!-- * All Funcsynopsisinfo content is by default rendered in bold, -->
+ <!-- * because the man(7) man page says this: -->
+ <!-- * -->
+ <!-- * For functions, the arguments are always specified using -->
+ <!-- * italics, even in the SYNOPSIS section, where the rest of -->
+ <!-- * the function is specified in bold -->
+ <!-- * -->
+ <!-- * Look through the contents of the man/man2 and man3 directories -->
+ <!-- * on your system, and you'll see that most existing pages do follow -->
+ <!-- * this "bold everything in function synopsis" rule. -->
+ <!-- * -->
+ <!-- * Users who don't want the bold output can choose to adjust the -->
+ <!-- * man.font.funcsynopsisinfo parameter on their own. So even if you -->
+ <!-- * don't personally like the way it looks, please don't change the -->
+ <!-- * default to be non-bold - because it's a convention that's -->
+ <!-- * followed is the vast majority of existing man pages that document -->
+ <!-- * functions, and we need to follow it by default, like it or no. -->
+ <xsl:text>.ft </xsl:text>
+ <xsl:value-of select="$man.font.funcsynopsisinfo"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.nf&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.fi&#10;</xsl:text>
+ <xsl:text>.ft&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Other verbatims do not need to get bolded -->
+ <xsl:text>.nf&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.fi&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$indent = 'Yes'">
+ <!-- * end indented section -->
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:if>
+ <!-- * if first following sibling node of this verbatim -->
+ <!-- * environment is a text node, output a line of space before it -->
+ <xsl:if test="following-sibling::node()[1][name(.) = '']">
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="table|informaltable">
+ <xsl:apply-templates select="." mode="to.tbl">
+ <!--* we call the to.tbl mode with the "source" param so that we can -->
+ <!--* preserve the context information and pass it down to the -->
+ <!--* named templates that do the actual table processing -->
+ <xsl:with-param name="source" select="ancestor::refentry/refnamediv[1]/refname[1]"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="informalexample">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="figure|example">
+ <xsl:variable name="param.placement"
+ select="substring-after(normalize-space($formal.title.placement),
+ concat(local-name(.), ' '))"/>
+
+ <xsl:variable name="placement">
+ <xsl:choose>
+ <xsl:when test="contains($param.placement, ' ')">
+ <xsl:value-of select="substring-before($param.placement, ' ')"/>
+ </xsl:when>
+ <xsl:when test="$param.placement = ''">before</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$param.placement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="formal.object">
+ <xsl:with-param name="placement" select="$placement"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="mediaobject">
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RE&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="imageobject">
+ <xsl:text>[IMAGE]</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="textobject[parent::inlinemediaobject]">
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>]</xsl:text>
+</xsl:template>
+
+<xsl:template match="textobject">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="formal.object">
+ <xsl:param name="placement" select="'before'"/>
+ <xsl:param name="class" select="local-name(.)"/>
+
+ <xsl:choose>
+ <xsl:when test="$placement = 'before'">
+ <xsl:call-template name="formal.object.heading"/>
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ <xsl:call-template name="formal.object.heading"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="formal.object.heading">
+ <xsl:param name="object" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$object" mode="object.title.markup.textonly"/>
+ </xsl:param>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($title)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * suppress abstract -->
+<xsl:template match="abstract"/>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/charmap.groff.xsl b/docs/xsl-generic/manpages/charmap.groff.xsl
new file mode 100644
index 00000000..7587659f
--- /dev/null
+++ b/docs/xsl-generic/manpages/charmap.groff.xsl
@@ -0,0 +1,5985 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<xsl:stylesheet version="2.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:u="http://docbook.sf.net/xmlns/unichar/1.0"
+ exclude-result-prefixes="u">
+
+<!-- ********************************************************************
+ $Id: charmap.groff.xsl 6528 2007-01-19 08:54:04Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:character-map name="groff">
+
+ <!-- * *************************************************************** -->
+ <!-- * Commentary -->
+ <!-- * *************************************************************** -->
+ <!-- * -->
+ <!-- * This file maps a selection of Unicode symbols and special -->
+ <!-- * characters (about 800) to corresponding groff escape sequences.-->
+ <!-- * -->
+ <!-- * Although the format of this file follows the "character map" -->
+ <!-- * format described in the XSLT 2.0 specification[1], the file can -->
+ <!-- * also be used with an appropriate XSLT 1.0 stylesheet and any -->
+ <!-- * XSLT 1.0 processor. -->
+ <!-- * -->
+ <!-- * [1] http://www.w3.org/TR/xslt20/#character-maps -->
+ <!-- * -->
+ <!-- * In order to make the character map more readable, and to make -->
+ <!-- * it possible to create subsets of it at run time, it uses the -->
+ <!-- * following "extension attributes" (in the "unichar" namespace): -->
+ <!-- * -->
+ <!-- * - u:name = ISO character name (e.g., "OHM SIGN") -->
+ <!-- * - u:entity = ISO entity name (e.g., "ohm") -->
+ <!-- * - u:block = Unicode block name (e.g., "Letterlike Symbols") -->
+ <!-- * - u:class = character class (e.g., "bullets") -->
+ <!-- * -->
+ <!-- * Use of such extension attributes is permitted by the XSLT 2.0 -->
+ <!-- * spec; see the "Extension Attributes" section[2]. -->
+ <!-- * -->
+ <!-- * [2] http://www.w3.org/TR/xslt20/#extension-attributes -->
+ <!-- * -->
+ <!-- * *************************************************************** -->
+ <!-- * Acknowledgements -->
+ <!-- * *************************************************************** -->
+ <!-- * The following references were consulted when selecting roff -->
+ <!-- * mappings and character information: -->
+ <!-- * -->
+ <!-- * - groff_char(7) man page[3] -->
+ <!-- * - groff info file[4]; in particular, the "Page Motions" node[5] -->
+ <!-- * - tables in "Character Sets" chapter of "XML In a Nutshell"[6] -->
+ <!-- * - Zvon Character Search[7] -->
+ <!-- * -->
+ <!-- * [3] http://www.linux.se/showMan.php?TITLE=groff_char&SECTION=7 -->
+ <!-- * [4] http://www.fifi.org/cgi-bin/info2www?(groff) -->
+ <!-- * [5] http://www.fifi.org/cgi-bin/info2www?(groff)Page+Motions -->
+ <!-- * [6] http://www.ibiblio.org/xml/books/xian2/ -->
+ <!-- * [7] http://zvon.org/other/charSearch/PHP/search.php -->
+ <!-- * -->
+ <!-- * The initial version of this file (before the "string" mappings -->
+ <!-- * were added) was generated by taking the "unichars.el" file from -->
+ <!-- * Norm Walsh's "xmlunicode.el"[8] elisp distro, and running a -->
+ <!-- * script on it to convert it to XML. -->
+ <!-- * -->
+ <!-- * [8] http://nwalsh.com/emacs/xmlchars/ -->
+ <!-- * -->
+ <!-- * The idea for implementing a character map in the DocBook Project -->
+ <!-- * manpages system was inspired by Steve Cheng's docbook2x[9]; -->
+ <!-- * in particular, its "utf8trans" utility and character-map system. -->
+ <!-- * -->
+ <!-- * [9] http://docbook2x.sourceforge.net/ -->
+ <!-- * -->
+ <!-- * ################################################################# -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Latin-1/ISO-8859-1 -->
+ <!-- * x00a0 to x00ff -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * A no-break space can be written two ways in roff; the difference, -->
+ <!-- * according to the "Page Motions" node in the groff info page, is: -->
+ <!-- * -->
+ <!-- * "\ " = -->
+ <!-- * An unbreakable and unpaddable (i.e. not expanded during filling) -->
+ <!-- * space. -->
+ <!-- * -->
+ <!-- * "\~" = -->
+ <!-- * An unbreakable space that stretches like a normal -->
+ <!-- * inter-word space when a line is adjusted." -->
+ <!-- * -->
+ <!-- * Unfortunately, roff seems to do some weird things with long -->
+ <!-- * lines that only have words separated by "\~" spaces, so it's -->
+ <!-- * safer just to stick with the "\ " space -->
+ <xsl:output-character
+ character="&#x00a0;"
+ u:name="NO-BREAK SPACE"
+ u:entity="nbsp"
+ string="\ "
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a1;"
+ u:name="INVERTED EXCLAMATION MARK"
+ u:entity="iexcl"
+ string="\(r!"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a2;"
+ u:name="CENT SIGN"
+ u:entity="cent"
+ string="\(ct"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a3;"
+ u:name="POUND SIGN"
+ u:entity="pound"
+ string="\(Po"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a4;"
+ u:name="CURRENCY SIGN"
+ u:entity="curren"
+ string="\(Cs"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a5;"
+ u:name="YEN SIGN"
+ u:entity="yen"
+ string="\(Ye"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a6;"
+ u:name="BROKEN BAR"
+ u:entity="brvbar"
+ string="\(bb"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a7;"
+ u:name="SECTION SIGN"
+ u:entity="sect"
+ string="\(sc"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a8;"
+ u:name="DIAERESIS"
+ u:entity="Dot"
+ string="\(ad"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00a9;"
+ u:name="COPYRIGHT SIGN"
+ u:entity="copy"
+ string="\(co"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00aa;"
+ u:name="FEMININE ORDINAL INDICATOR"
+ u:entity="ordf"
+ string="\(Of"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00ab;"
+ u:name="LEFT-POINTING DOUBLE ANGLE QUOTATION MARK"
+ u:entity="laquo"
+ string="\(Fo"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00ac;"
+ u:name="NOT SIGN"
+ u:entity="not"
+ string="\(no"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <!-- * groff_char(7) man page sayxsl: "the soft hyphen control character -->
+ <!-- * (prints as itself). groff never use this character for output -->
+ <!-- * (thus it is omitted in the table below); the input character 173 -->
+ <!-- * is onto \%." -->
+ <xsl:output-character
+ character="&#x00ad;"
+ u:name="SOFT HYPHEN"
+ u:entity="shy"
+ string="\%"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00ae;"
+ u:name="REGISTERED SIGN"
+ u:entity="reg"
+ string="\(rg"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00af;"
+ u:name="MACRON"
+ u:entity="macr"
+ string="\(a-"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b0;"
+ u:name="DEGREE SIGN"
+ u:entity="deg"
+ string="\(de"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b1;"
+ u:name="PLUS-MINUS SIGN"
+ u:entity="plusmn"
+ string="\(+-"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b2;"
+ u:name="SUPERSCRIPT TWO"
+ u:entity="sup2"
+ string="\(S2"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b3;"
+ u:name="SUPERSCRIPT THREE"
+ u:entity="sup3"
+ string="\(S3"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b4;"
+ u:name="ACUTE ACCENT"
+ u:entity="acute"
+ string="\(aa"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b5;"
+ u:name="MICRO SIGN"
+ u:entity="micro"
+ string="\(mc"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b6;"
+ u:name="PILCROW SIGN"
+ u:entity="para"
+ string="\(ps"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <!-- * according to groff_char(7), I think the escape string \(pc -->
+ <!-- * "periodcentered" could also be used for middot; not sure which -->
+ <!-- * is better, but "md" mnemonic is a better fit :-) -->
+ <xsl:output-character
+ character="&#x00b7;"
+ u:name="MIDDLE DOT"
+ u:entity="middot"
+ string="\(md"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b8;"
+ u:name="CEDILLA"
+ u:entity="cedil"
+ string="\(ac"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00b9;"
+ u:name="SUPERSCRIPT ONE"
+ u:entity="sup1"
+ string="\(S1"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00ba;"
+ u:name="MASCULINE ORDINAL INDICATOR"
+ u:entity="ordm"
+ string="\(Om"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00bb;"
+ u:name="RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK"
+ u:entity="raquo"
+ string="\(Fc"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00bc;"
+ u:name="VULGAR FRACTION ONE QUARTER"
+ u:entity="frac14"
+ string="\(14"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00bd;"
+ u:name="VULGAR FRACTION ONE HALF"
+ u:entity="frac12"
+ string="\(12"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00be;"
+ u:name="VULGAR FRACTION THREE QUARTERS"
+ u:entity="frac34"
+ string="\(34"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00bf;"
+ u:name="INVERTED QUESTION MARK"
+ u:entity="iquest"
+ string="\(r?"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00c0;"
+ u:name="LATIN CAPITAL LETTER A WITH GRAVE"
+ u:entity="Agrave"
+ string="\(`A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c1;"
+ u:name="LATIN CAPITAL LETTER A WITH ACUTE"
+ u:entity="Aacute"
+ string="\('A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c2;"
+ u:name="LATIN CAPITAL LETTER A WITH CIRCUMFLEX"
+ u:entity="Acirc"
+ string="\(^A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c3;"
+ u:name="LATIN CAPITAL LETTER A WITH TILDE"
+ u:entity="Atilde"
+ string="\(~A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c4;"
+ u:name="LATIN CAPITAL LETTER A WITH DIAERESIS"
+ u:entity="Auml"
+ string="\(:A"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c5;"
+ u:name="LATIN CAPITAL LETTER A WITH RING ABOVE"
+ u:entity="Aring"
+ string="\(oA"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c6;"
+ u:name="LATIN CAPITAL LETTER AE"
+ u:entity="AElig"
+ string="\(AE"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c7;"
+ u:name="LATIN CAPITAL LETTER C WITH CEDILLA"
+ u:entity="Ccedil"
+ string="\(,C"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c8;"
+ u:name="LATIN CAPITAL LETTER E WITH GRAVE"
+ u:entity="Egrave"
+ string="\(`E"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00c9;"
+ u:name="LATIN CAPITAL LETTER E WITH ACUTE"
+ u:entity="Eacute"
+ string="\('E"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ca;"
+ u:name="LATIN CAPITAL LETTER E WITH CIRCUMFLEX"
+ u:entity="Ecirc"
+ string="\(^E"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00cb;"
+ u:name="LATIN CAPITAL LETTER E WITH DIAERESIS"
+ u:entity="Euml"
+ string="\(:E"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00cc;"
+ u:name="LATIN CAPITAL LETTER I WITH GRAVE"
+ u:entity="Igrave"
+ string="\(`I"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00cd;"
+ u:name="LATIN CAPITAL LETTER I WITH ACUTE"
+ u:entity="Iacute"
+ string="\('I"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ce;"
+ u:name="LATIN CAPITAL LETTER I WITH CIRCUMFLEX"
+ u:entity="Icirc"
+ string="\(^I"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00cf;"
+ u:name="LATIN CAPITAL LETTER I WITH DIAERESIS"
+ u:entity="Iuml"
+ string="\(:I"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d0;"
+ u:name="LATIN CAPITAL LETTER ETH"
+ u:entity="ETH"
+ string="\(-D"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d1;"
+ u:name="LATIN CAPITAL LETTER N WITH TILDE"
+ u:entity="Ntilde"
+ string="\(~N"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d2;"
+ u:name="LATIN CAPITAL LETTER O WITH GRAVE"
+ u:entity="Ograve"
+ string="\(`O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d3;"
+ u:name="LATIN CAPITAL LETTER O WITH ACUTE"
+ u:entity="Oacute"
+ string="\('O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d4;"
+ u:name="LATIN CAPITAL LETTER O WITH CIRCUMFLEX"
+ u:entity="Ocirc"
+ string="\(^O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d5;"
+ u:name="LATIN CAPITAL LETTER O WITH TILDE"
+ u:entity="Otilde"
+ string="\(~O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d6;"
+ u:name="LATIN CAPITAL LETTER O WITH DIAERESIS"
+ u:entity="Ouml"
+ string="\(:O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d7;"
+ u:name="MULTIPLICATION SIGN"
+ u:entity="times"
+ string="\(mu"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00d8;"
+ u:name="LATIN CAPITAL LETTER O WITH STROKE"
+ u:entity="Oslash"
+ string="\(/O"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00d9;"
+ u:name="LATIN CAPITAL LETTER U WITH GRAVE"
+ u:entity="Ugrave"
+ string="\(`U"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00da;"
+ u:name="LATIN CAPITAL LETTER U WITH ACUTE"
+ u:entity="Uacute"
+ string="\('U"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00db;"
+ u:name="LATIN CAPITAL LETTER U WITH CIRCUMFLEX"
+ u:entity="Ucirc"
+ string="\(^U"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00dc;"
+ u:name="LATIN CAPITAL LETTER U WITH DIAERESIS"
+ u:entity="Uuml"
+ string="\(:U"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00dd;"
+ u:name="LATIN CAPITAL LETTER Y WITH ACUTE"
+ u:entity="Yacute"
+ string="\('Y"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00de;"
+ u:name="LATIN CAPITAL LETTER THORN"
+ u:entity="THORN"
+ string="\(TP"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00df;"
+ u:name="LATIN SMALL LETTER SHARP S"
+ u:entity="szlig"
+ string="\(ss"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e0;"
+ u:name="LATIN SMALL LETTER A WITH GRAVE"
+ u:entity="agrave"
+ string="\(`a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e1;"
+ u:name="LATIN SMALL LETTER A WITH ACUTE"
+ u:entity="aacute"
+ string="\('a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e2;"
+ u:name="LATIN SMALL LETTER A WITH CIRCUMFLEX"
+ u:entity="acirc"
+ string="\(^a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e3;"
+ u:name="LATIN SMALL LETTER A WITH TILDE"
+ u:entity="atilde"
+ string="\(~a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e4;"
+ u:name="LATIN SMALL LETTER A WITH DIAERESIS"
+ u:entity="auml"
+ string="\(:a"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e5;"
+ u:name="LATIN SMALL LETTER A WITH RING ABOVE"
+ u:entity="aring"
+ string="\(oa"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e6;"
+ u:name="LATIN SMALL LETTER AE"
+ u:entity="aelig"
+ string="\(ae"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e7;"
+ u:name="LATIN SMALL LETTER C WITH CEDILLA"
+ u:entity="ccedil"
+ string="\(,c"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e8;"
+ u:name="LATIN SMALL LETTER E WITH GRAVE"
+ u:entity="egrave"
+ string="\(`e"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00e9;"
+ u:name="LATIN SMALL LETTER E WITH ACUTE"
+ u:entity="eacute"
+ string="\('e"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ea;"
+ u:name="LATIN SMALL LETTER E WITH CIRCUMFLEX"
+ u:entity="ecirc"
+ string="\(^e"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00eb;"
+ u:name="LATIN SMALL LETTER E WITH DIAERESIS"
+ u:entity="euml"
+ string="\(:e"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ec;"
+ u:name="LATIN SMALL LETTER I WITH GRAVE"
+ u:entity="igrave"
+ string="\(`i"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ed;"
+ u:name="LATIN SMALL LETTER I WITH ACUTE"
+ u:entity="iacute"
+ string="\('i"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ee;"
+ u:name="LATIN SMALL LETTER I WITH CIRCUMFLEX"
+ u:entity="icirc"
+ string="\(^i"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ef;"
+ u:name="LATIN SMALL LETTER I WITH DIAERESIS"
+ u:entity="iuml"
+ string="\(:i"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f0;"
+ u:name="LATIN SMALL LETTER ETH"
+ u:entity="eth"
+ string="\(Sd"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f1;"
+ u:name="LATIN SMALL LETTER N WITH TILDE"
+ u:entity="ntilde"
+ string="\(~n"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f2;"
+ u:name="LATIN SMALL LETTER O WITH GRAVE"
+ u:entity="ograve"
+ string="\(`o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f3;"
+ u:name="LATIN SMALL LETTER O WITH ACUTE"
+ u:entity="oacute"
+ string="\('o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f4;"
+ u:name="LATIN SMALL LETTER O WITH CIRCUMFLEX"
+ u:entity="ocirc"
+ string="\(^o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f5;"
+ u:name="LATIN SMALL LETTER O WITH TILDE"
+ u:entity="otilde"
+ string="\(~o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f6;"
+ u:name="LATIN SMALL LETTER O WITH DIAERESIS"
+ u:entity="ouml"
+ string="\(:o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f7;"
+ u:name="DIVISION SIGN"
+ u:entity="divide"
+ string="\(di"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="symbols"
+ />
+ <xsl:output-character
+ character="&#x00f8;"
+ u:name="LATIN SMALL LETTER O WITH STROKE"
+ u:entity="oslash"
+ string="\(/o"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00f9;"
+ u:name="LATIN SMALL LETTER U WITH GRAVE"
+ u:entity="ugrave"
+ string="\(`u"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fa;"
+ u:name="LATIN SMALL LETTER U WITH ACUTE"
+ u:entity="uacute"
+ string="\('u"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fb;"
+ u:name="LATIN SMALL LETTER U WITH CIRCUMFLEX"
+ u:entity="ucirc"
+ string="\(^u"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fc;"
+ u:name="LATIN SMALL LETTER U WITH DIAERESIS"
+ u:entity="uuml"
+ string="\(:u"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fd;"
+ u:name="LATIN SMALL LETTER Y WITH ACUTE"
+ u:entity="yacute"
+ string="\('y"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00fe;"
+ u:name="LATIN SMALL LETTER THORN"
+ u:entity="thorn"
+ string="\(Tp"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <xsl:output-character
+ character="&#x00ff;"
+ u:name="LATIN SMALL LETTER Y WITH DIAERESIS"
+ u:entity="yuml"
+ string="\(:y"
+ u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)"
+ u:class="letters"
+ />
+ <!-- * **************************************************************** -->
+ <!-- * End: Latin-1/ISO-8859-1 -->
+ <!-- * **************************************************************** -->
+
+ <!-- * **************************************************************** -->
+ <!-- * Begin: -->
+ <!-- * -->
+ <!-- * - x0100 to x017f (Latin Extended-A) -->
+ <!-- * - x0180 to x023f (Latin Extended-B) -->
+ <!-- * - x0250 to x02ad (IPA Extensions) -->
+ <!-- * - x02b0 to x02ee (Spacing Modifier Letters) -->
+ <!-- * - x0300 to x036f (Combining Diacritical Marks) -->
+ <!-- * -->
+ <!-- * Other than the following exceptions, characters in these -->
+ <!-- * blocks don't have any roff equivalents -->
+ <!-- * **************************************************************** -->
+
+ <xsl:output-character
+ character="&#x0131;"
+ u:name="LATIN SMALL LETTER DOTLESS I"
+ u:entity="inodot"
+ string="\(.i"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0132;"
+ u:name="LATIN CAPITAL LIGATURE IJ"
+ u:entity="IJlig"
+ string="\(IJ"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0133;"
+ u:name="LATIN SMALL LIGATURE IJ"
+ u:entity="ijlig"
+ string="\(ij"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0141;"
+ u:name="LATIN CAPITAL LETTER L WITH STROKE"
+ u:entity="Lstrok"
+ string="\(/L"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0142;"
+ u:name="LATIN SMALL LETTER L WITH STROKE"
+ u:entity="lstrok"
+ string="\(/l"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0152;"
+ u:name="LATIN CAPITAL LIGATURE OE"
+ u:entity="OElig"
+ string="\(OE"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0153;"
+ u:name="LATIN SMALL LIGATURE OE"
+ u:entity="oelig"
+ string="\(oe"
+ u:block="Latin Extended-A"
+ />
+ <xsl:output-character
+ character="&#x0192;"
+ u:name="LATIN SMALL LETTER F WITH HOOK"
+ u:entity="fnof"
+ string="\(Fn"
+ u:block="Latin Extended-B"
+ />
+ <xsl:output-character
+ character="&#x02c6;"
+ u:name="MODIFIER LETTER CIRCUMFLEX ACCENT"
+ u:entity="circ"
+ string="\(a^"
+ u:block="Spacing Modifier Letters"
+ />
+ <xsl:output-character
+ character="&#x02c7;"
+ u:name="CARON"
+ u:entity="caron"
+ string="\(ac"
+ u:block="Spacing Modifier Letters"
+ />
+ <xsl:output-character
+ character="&#x02c9;"
+ u:name="MODIFIER LETTER MACRON"
+ string="\(a-"
+ u:block="Spacing Modifier Letters"
+ />
+ <xsl:output-character
+ character="&#x02d8;"
+ u:name="BREVE"
+ u:entity="breve"
+ string="\(ab"
+ u:block="Spacing Modifier Letters"
+ />
+<!-- * there does not seem to by any roff equivalent for "dot above" -->
+<!-- * <xsl:output-character -->
+<!-- * character="&#x02d9;" -->
+<!-- * u:name="DOT ABOVE" -->
+<!-- * u:entity="dot" -->
+<!-- * /> -->
+ <xsl:output-character
+ character="&#x02da;"
+ u:name="RING ABOVE"
+ u:entity="ring"
+ string="\(ao"
+ u:block="Spacing Modifier Letters"
+ />
+ <xsl:output-character
+ character="&#x02db;"
+ u:name="OGONEK"
+ u:entity="ogon"
+ string="\(ho"
+ u:block="Spacing Modifier Letters"
+ />
+ <!-- groff_char(7) calls Unicode x02dd a "Hungarian umlaut" -->
+ <xsl:output-character
+ character="&#x02dd;"
+ u:name="DOUBLE ACUTE ACCENT"
+ u:entity="dblac"
+ string='\(a"'
+ u:block="Spacing Modifier Letters"
+ />
+
+ <!-- * **************************************************************** -->
+ <!-- * End: -->
+ <!-- * - Latin Extended-A -->
+ <!-- * - Latin Extended-B -->
+ <!-- * - IPA Extensions -->
+ <!-- * - Spacing Modifier Letters -->
+ <!-- * - Combining Diacritical Marks -->
+ <!-- * **************************************************************** -->
+
+ <!-- * **************************************************************** -->
+ <!-- * Begin: Greek and Coptic -->
+ <!-- * x0370 to x03ff -->
+ <!-- * **************************************************************** -->
+
+ <xsl:output-character
+ character="&#x0391;"
+ u:name="GREEK CAPITAL LETTER ALPHA"
+ u:entity="Agr"
+ string="\(*A)"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0392;"
+ u:name="GREEK CAPITAL LETTER BETA"
+ u:entity="Bgr"
+ string="\(*B"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0393;"
+ u:name="GREEK CAPITAL LETTER GAMMA"
+ u:entity="Gamma"
+ string="\(*G"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0394;"
+ u:name="GREEK CAPITAL LETTER DELTA"
+ u:entity="Delta"
+ string="\(*D"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0395;"
+ u:name="GREEK CAPITAL LETTER EPSILON"
+ u:entity="Egr"
+ string="\(*E"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0396;"
+ u:name="GREEK CAPITAL LETTER ZETA"
+ u:entity="Zgr"
+ string="\(*Z"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0397;"
+ u:name="GREEK CAPITAL LETTER ETA"
+ u:entity="EEgr"
+ string="\(*Y"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0398;"
+ u:name="GREEK CAPITAL LETTER THETA"
+ u:entity="THgr"
+ string="\(*H"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x0399;"
+ u:name="GREEK CAPITAL LETTER IOTA"
+ u:entity="Igr"
+ string="\(*I"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039a;"
+ u:name="GREEK CAPITAL LETTER KAPPA"
+ u:entity="Kgr"
+ string="\(*K"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039b;"
+ u:name="GREEK CAPITAL LETTER LAMDA"
+ u:entity="Lambda"
+ string="\(*L"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039c;"
+ u:name="GREEK CAPITAL LETTER MU"
+ u:entity="Mgr"
+ string="\(*M"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039d;"
+ u:name="GREEK CAPITAL LETTER NU"
+ u:entity="Ngr"
+ string="\(*N"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039e;"
+ u:name="GREEK CAPITAL LETTER XI"
+ u:entity="Xgr"
+ string="\(*C"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x039f;"
+ u:name="GREEK CAPITAL LETTER OMICRON"
+ u:entity="Ogr"
+ string="\(*O"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a0;"
+ u:name="GREEK CAPITAL LETTER PI"
+ u:entity="Pgr"
+ string="\(*P"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a1;"
+ u:name="GREEK CAPITAL LETTER RHO"
+ u:entity="Rgr"
+ string="\(*R"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a3;"
+ u:name="GREEK CAPITAL LETTER SIGMA"
+ u:entity="Sgr"
+ string="\(*S"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a4;"
+ u:name="GREEK CAPITAL LETTER TAU"
+ u:entity="Tgr"
+ string="\(*T"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a5;"
+ u:name="GREEK CAPITAL LETTER UPSILON"
+ u:entity="Ugr"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a6;"
+ u:name="GREEK CAPITAL LETTER PHI"
+ u:entity="PHgr"
+ string="\(*F"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a7;"
+ u:name="GREEK CAPITAL LETTER CHI"
+ u:entity="KHgr"
+ string="\(*X"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a8;"
+ u:name="GREEK CAPITAL LETTER PSI"
+ u:entity="PSgr"
+ string="\(*Q"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03a9;"
+ u:name="GREEK CAPITAL LETTER OMEGA"
+ u:entity="OHgr"
+ string="\(*W"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03aa;"
+ u:name="GREEK CAPITAL LETTER IOTA WITH DIALYTIKA"
+ u:entity="Idigr"
+ string="\(*I"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ab;"
+ u:name="GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA"
+ u:entity="Udigr"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ac;"
+ u:name="GREEK SMALL LETTER ALPHA WITH TONOS"
+ u:entity="aacgr"
+ string="\(*a"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ad;"
+ u:name="GREEK SMALL LETTER EPSILON WITH TONOS"
+ u:entity="eacgr"
+ string="\(*e"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ae;"
+ u:name="GREEK SMALL LETTER ETA WITH TONOS"
+ u:entity="eeacgr"
+ string="\(*y"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03af;"
+ u:name="GREEK SMALL LETTER IOTA WITH TONOS"
+ u:entity="iacgr"
+ string="\(*i"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b0;"
+ u:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS"
+ u:entity="udiagr"
+ string="\(*u"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b1;"
+ u:name="GREEK SMALL LETTER ALPHA"
+ u:entity="agr"
+ string="\(*a"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b2;"
+ u:name="GREEK SMALL LETTER BETA"
+ u:entity="beta"
+ string="\(*b"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b3;"
+ u:name="GREEK SMALL LETTER GAMMA"
+ u:entity="gamma"
+ string="\(*g"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b4;"
+ u:name="GREEK SMALL LETTER DELTA"
+ u:entity="delta"
+ string="\(*d"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b5;"
+ u:name="GREEK SMALL LETTER EPSILON"
+ u:entity="epsi"
+ string="\(*e"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b6;"
+ u:name="GREEK SMALL LETTER ZETA"
+ u:entity="zeta"
+ string="\(*z"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b7;"
+ u:name="GREEK SMALL LETTER ETA"
+ u:entity="eegr"
+ string="\(*y"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b8;"
+ u:name="GREEK SMALL LETTER THETA"
+ u:entity="thetas"
+ string="\(*h"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03b9;"
+ u:name="GREEK SMALL LETTER IOTA"
+ u:entity="igr"
+ string="\(*i"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ba;"
+ u:name="GREEK SMALL LETTER KAPPA"
+ u:entity="kappa"
+ string="\(*k"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03bb;"
+ u:name="GREEK SMALL LETTER LAMDA"
+ u:entity="lambda"
+ string="\(*l"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03bc;"
+ u:name="GREEK SMALL LETTER MU"
+ u:entity="mgr"
+ string="\(*m"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03bd;"
+ u:name="GREEK SMALL LETTER NU"
+ u:entity="ngr"
+ string="\(*n"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03be;"
+ u:name="GREEK SMALL LETTER XI"
+ u:entity="xgr"
+ string="\(*c"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03bf;"
+ u:name="GREEK SMALL LETTER OMICRON"
+ u:entity="ogr"
+ string="\(*o"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c0;"
+ u:name="GREEK SMALL LETTER PI"
+ u:entity="pgr"
+ string="\(*p"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c1;"
+ u:name="GREEK SMALL LETTER RHO"
+ u:entity="rgr"
+ string="\(*r"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c2;"
+ u:name="GREEK SMALL LETTER FINAL SIGMA"
+ u:entity="sfgr"
+ string="\(ts"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c3;"
+ u:name="GREEK SMALL LETTER SIGMA"
+ u:entity="sgr"
+ string="\(*s"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c4;"
+ u:name="GREEK SMALL LETTER TAU"
+ u:entity="tau"
+ string="\(*t"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c5;"
+ u:name="GREEK SMALL LETTER UPSILON"
+ u:entity="ugr"
+ string="\(*u"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c6;"
+ u:name="GREEK SMALL LETTER PHI"
+ u:entity="phgr"
+ string="\(*f"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c7;"
+ u:name="GREEK SMALL LETTER CHI"
+ u:entity="chi"
+ string="\(*x"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c8;"
+ u:name="GREEK SMALL LETTER PSI"
+ u:entity="psgr"
+ string="\(*q"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03c9;"
+ u:name="GREEK SMALL LETTER OMEGA"
+ u:entity="ohgr"
+ string="\(*w"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ca;"
+ u:name="GREEK SMALL LETTER IOTA WITH DIALYTIKA"
+ u:entity="idigr"
+ string="\(*i"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03cb;"
+ u:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA"
+ u:entity="udigr"
+ string="\(*u"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03cc;"
+ u:name="GREEK SMALL LETTER OMICRON WITH TONOS"
+ u:entity="oacgr"
+ string="\(*o"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03cd;"
+ u:name="GREEK SMALL LETTER UPSILON WITH TONOS"
+ u:entity="uacgr"
+ string="\(*u"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03ce;"
+ u:name="GREEK SMALL LETTER OMEGA WITH TONOS"
+ u:entity="ohacgr"
+ string="\(*w"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d0;"
+ u:name="GREEK BETA SYMBOL"
+ string="\(*B"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d1;"
+ u:name="GREEK THETA SYMBOL"
+ u:entity="thetav"
+ string="\(+h"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d2;"
+ u:name="GREEK UPSILON WITH HOOK SYMBOL"
+ u:entity="Upsi"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d3;"
+ u:name="GREEK UPSILON WITH ACUTE AND HOOK SYMBOL"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d4;"
+ u:name="GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL"
+ string="\(*U"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d5;"
+ u:name="GREEK PHI SYMBOL"
+ u:entity="phis"
+ string="\(+f"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03d6;"
+ u:name="GREEK PI SYMBOL"
+ u:entity="piv"
+ string="\(+p"
+ u:block="Greek and Coptic"
+ />
+ <!-- no mappings for remaining chars x03d7 to x03ef -->
+ <xsl:output-character
+ character="&#x03f0;"
+ u:name="GREEK KAPPA SYMBOL"
+ u:entity="kappav"
+ string="(*k"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f1;"
+ u:name="GREEK RHO SYMBOL"
+ u:entity="rhov"
+ string="\(*r"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f2;"
+ u:name="GREEK LUNATE SIGMA SYMBOL"
+ string="\(*s"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f4;"
+ u:name="GREEK CAPITAL THETA SYMBOL"
+ string="\(*H"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f5;"
+ u:name="GREEK LUNATE EPSILON SYMBOL"
+ string="\(*e"
+ u:block="Greek and Coptic"
+ />
+ <xsl:output-character
+ character="&#x03f6;"
+ u:name="GREEK REVERSED LUNATE EPSILON SYMBOL"
+ u:entity="bepsi"
+ string="\(*e"
+ u:block="Greek and Coptic"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Greek and Coptic -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Cyrillic -->
+ <!-- * x0400 to x04ff -->
+ <!-- * - do nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: General Punctuation -->
+ <!-- * x2000 to x206f -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * first, spaces of various widths -->
+
+ <!-- * Note: There does not seem to be either a real em space or en space -->
+ <!-- * in roff; to approximate them, this character map assumes that in -->
+ <!-- * most fonts, an en space is about the same as the width of a digit -->
+ <!-- * (in roff, "\0"), so an em space (which by definition is -->
+ <!-- * equal to the width of two en spaces) is about the same as the width -->
+ <!-- * of two digits (thus, in roff, "\0\0") -->
+
+ <xsl:output-character
+ character="&#x2000;"
+ u:name="EN QUAD"
+ string="\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <xsl:output-character
+ character="&#x2001;"
+ u:name="EM QUAD"
+ string="\0\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <xsl:output-character
+ character="&#x2002;"
+ u:name="EN SPACE"
+ u:entity="ensp"
+ string="\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <xsl:output-character
+ character="&#x2003;"
+ u:name="EM SPACE"
+ u:entity="emsp"
+ string="\0\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * roughly same width as a normal space -->
+ <xsl:output-character
+ character="&#x2004;"
+ u:name="THREE-PER-EM SPACE"
+ u:entity="emsp13"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * roughly same width as a normal space -->
+ <xsl:output-character
+ character="&#x2005;"
+ u:name="FOUR-PER-EM SPACE"
+ u:entity="emsp14"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * roughly same width as a normal space -->
+ <xsl:output-character
+ character="&#x2006;"
+ u:name="SIX-PER-EM SPACE"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * same as roff "digit" space -->
+ <xsl:output-character
+ character="&#x2007;"
+ u:name="FIGURE SPACE"
+ u:entity="numsp"
+ string="\0"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * punctuation space in most fonts is actually closer to a normal -->
+ <!-- * space than it is to a thin space -->
+ <xsl:output-character
+ character="&#x2008;"
+ u:name="PUNCTUATION SPACE"
+ u:entity="puncsp"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * Note: Not sure how best to deal with thin space, because the roff -->
+ <!-- * thin space, "\^", prints as a zero-width space in TTY -->
+ <!-- * output. However, it seems that, unlike a hair space, a thin space, -->
+ <!-- * at 1/12 of an em, is still recognizable to most people as a space, -->
+ <!-- * so treating it as zero-width seems wrong. So, for the sake of making -->
+ <!-- * TTY output look OK, just substitute with a normal space; but real -->
+ <!-- * roff escape is "\(\^" -->
+ <xsl:output-character
+ character="&#x2009;"
+ u:name="THIN SPACE"
+ u:entity="thinsp"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * I don't think there's a standard definition of what a hair -->
+ <!-- * space is; some guides just say it's "less than 1/5 of an em" or -->
+ <!-- * that it's "narrower than a thin space"; seems like in practice, -->
+ <!-- * it's *a lot* narrower than a thin space, to the point where -->
+ <!-- * it's close to being a non-space, so here it's substituted with -->
+ <!-- * roff equivalent of a zero-width no-break space -->
+ <xsl:output-character
+ character="&#x200a;"
+ u:name="HAIR SPACE"
+ u:entity="hairsp"
+ string="\&amp;"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * map to roff "zero-width break point" -->
+ <xsl:output-character
+ character="&#x200b;"
+ u:name="ZERO WIDTH SPACE"
+ string="\:"
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+
+ <!-- * x200c and x200d have special purposes in some Indic languages (I -->
+ <!-- * think); for the "correct" zero-width space, according to Unicode docs, -->
+ <!-- * use x2060, not x200c or x200d -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x200c;" -->
+ <!-- * u:name="ZERO WIDTH NON-JOINER" -->
+ <!-- * string="\:" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x200d;" -->
+ <!-- * u:name="ZERO WIDTH JOINER" -->
+ <!-- * string="\&amp;" -->
+ <!-- * /> -->
+ <!-- * non-visible -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x200e;" -->
+ <!-- * u:name="LEFT-TO-RIGHT MARK" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x200f;" -->
+ <!-- * u:name="RIGHT-TO-LEFT MARK" -->
+ <!-- * /> -->
+
+ <!-- * .................................................... -->
+ <!-- * next, hyphens and various dashes, bars, underscores -->
+ <xsl:output-character
+ character="&#x2010;"
+ u:name="HYPHEN"
+ u:entity="hyphen"
+ string="\(hy"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <!-- * although the groff docs do not make it clear, testing -->
+ <!-- * indicates that the only reliable way to make a non-breaking -->
+ <!-- * hyphen is to put just a backslash in front of it. -->
+ <!-- * -->
+ <!-- * based on testing, it also appears that no character is needed -->
+ <!-- * after the hyphen in order to make it non-breaking -->
+ <xsl:output-character
+ character="&#x2011;"
+ u:name="NON-BREAKING HYPHEN"
+ string="\-"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <!-- * roughly same width as en dash -->
+ <xsl:output-character
+ character="&#x2012;"
+ u:name="FIGURE DASH"
+ string="\(en"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <xsl:output-character
+ character="&#x2013;"
+ u:name="EN DASH"
+ u:entity="ndash"
+ string="\(en"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <xsl:output-character
+ character="&#x2014;"
+ u:name="EM DASH"
+ u:entity="mdash"
+ string="\(em"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <!-- * seems roughly same width as em dash -->
+ <xsl:output-character
+ character="&#x2015;"
+ u:name="HORIZONTAL BAR"
+ u:entity="horbar"
+ string="\(em"
+ u:block="General Punctuation"
+ u:class="dashes"
+ />
+ <xsl:output-character
+ character="&#x2016;"
+ u:name="DOUBLE VERTICAL LINE"
+ u:entity="Verbar"
+ string="\(bv\(bv"
+ u:block="General Punctuation"
+ />
+ <!-- * no double-underscore in roff; so just make it a single -->
+ <!-- * underscore -->
+ <xsl:output-character
+ character="&#x2017;"
+ u:name="DOUBLE LOW LINE"
+ string="_"
+ u:block="General Punctuation"
+ />
+
+ <!-- * .................................................... -->
+ <!-- * various quotation marks -->
+ <xsl:output-character
+ character="&#x2018;"
+ u:name="LEFT SINGLE QUOTATION MARK"
+ u:entity="lsquo"
+ string="\(oq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x2019;"
+ u:name="RIGHT SINGLE QUOTATION MARK"
+ u:entity="rsquo"
+ string="\(cq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x201a;"
+ u:name="SINGLE LOW-9 QUOTATION MARK"
+ u:entity="lsquor"
+ string="\(bq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <!-- * no roff equiv; treat same as lsquo -->
+ <xsl:output-character
+ character="&#x201b;"
+ u:name="SINGLE HIGH-REVERSED-9 QUOTATION MARK"
+ string="\(oq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x201c;"
+ u:name="LEFT DOUBLE QUOTATION MARK"
+ u:entity="ldquo"
+ string="\(lq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x201d;"
+ u:name="RIGHT DOUBLE QUOTATION MARK"
+ u:entity="rdquo"
+ string="\(rq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x201e;"
+ u:name="DOUBLE LOW-9 QUOTATION MARK"
+ u:entity="ldquor"
+ string="\(Bq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <!-- * no roff equiv; treat same as rdquo -->
+ <xsl:output-character
+ character="&#x201f;"
+ u:name="DOUBLE HIGH-REVERSED-9 QUOTATION MARK"
+ string="\(rq"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+
+ <!-- * .................................................... -->
+ <!-- * various symbols -->
+ <xsl:output-character
+ character="&#x2020;"
+ u:name="DAGGER"
+ u:entity="dagger"
+ string="\(dg"
+ u:block="General Punctuation_daggers"
+ />
+ <xsl:output-character
+ character="&#x2021;"
+ u:name="DOUBLE DAGGER"
+ u:entity="Dagger"
+ string="\(dd"
+ u:block="General Punctuation_daggers"
+ />
+ <xsl:output-character
+ character="&#x2022;"
+ u:name="BULLET"
+ u:entity="bull"
+ string="\(bu"
+ u:block="General Punctuation"
+ u:class="bullets"
+ />
+ <!-- * no roff equiv -->
+ <xsl:output-character
+ character="&#x2023;"
+ u:name="TRIANGULAR BULLET"
+ string=">\&amp;"
+ u:block="General Punctuation"
+ u:class="bullets"
+ />
+ <!-- * no roff equiv -->
+ <xsl:output-character
+ character="&#x2024;"
+ u:name="ONE DOT LEADER"
+ string="\&amp;."
+ u:block="General Punctuation_leaders"
+ />
+ <!-- * no roff equiv -->
+ <xsl:output-character
+ character="&#x2025;"
+ u:name="TWO DOT LEADER"
+ u:entity="nldr"
+ string="\&amp;.."
+ u:block="General Punctuation_leaders"
+ />
+ <!-- * no roff equiv -->
+ <xsl:output-character
+ character="&#x2026;"
+ u:name="HORIZONTAL ELLIPSIS"
+ u:entity="hellip"
+ string="\&amp;..."
+ u:block="General Punctuation"
+ />
+ <!-- what is "hyphenation point" used for? looks like middot to me... -->
+ <xsl:output-character
+ character="&#x2027;"
+ u:name="HYPHENATION POINT"
+ string="\(md"
+ u:block="General Punctuation"
+ />
+ <!-- * Begin x2028 to x202e - no idea what to do with these -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2028;" -->
+ <!-- * u:name="LINE SEPARATOR" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2029;" -->
+ <!-- * u:name="PARAGRAPH SEPARATOR" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202a;" -->
+ <!-- * u:name="LEFT-TO-RIGHT EMBEDDING" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202b;" -->
+ <!-- * u:name="RIGHT-TO-LEFT EMBEDDING" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202c;" -->
+ <!-- * u:name="POP DIRECTIONAL FORMATTING" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202d;" -->
+ <!-- * u:name="LEFT-TO-RIGHT OVERRIDE" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x202e;" -->
+ <!-- * u:name="RIGHT-TO-LEFT OVERRIDE" -->
+ <!-- * /> -->
+ <!-- * End x2028 to x202e - no idea what to do with these -->
+
+ <!-- * seems like "narrow" nbsp is basically the same as a no-break -->
+ <!-- * space -->
+ <xsl:output-character
+ character="&#x202f;"
+ u:name="NARROW NO-BREAK SPACE"
+ string="\ "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <xsl:output-character
+ character="&#x2030;"
+ u:name="PER MILLE SIGN"
+ u:entity="permil"
+ string="\(%0"
+ u:block="General Punctuation"
+ />
+ <!-- * no roff equiv; no idea what to do with it -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2031;" -->
+ <!-- * u:name="PER TEN THOUSAND SIGN" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2032;"
+ u:name="PRIME"
+ u:entity="prime"
+ string="\(fm"
+ u:block="General Punctuation"
+ u:class="primes"
+ />
+ <xsl:output-character
+ character="&#x2033;"
+ u:name="DOUBLE PRIME"
+ u:entity="Prime"
+ string="\(sd"
+ u:block="General Punctuation"
+ u:class="primes"
+ />
+ <xsl:output-character
+ character="&#x2034;"
+ u:name="TRIPLE PRIME"
+ u:entity="tprime"
+ string="\(sd\(fm"
+ u:block="General Punctuation"
+ u:class="primes"
+ />
+ <!-- * no idea for these -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2035;" -->
+ <!-- * u:name="REVERSED PRIME" -->
+ <!-- * u:entity="bprime" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2036;" -->
+ <!-- * u:name="REVERSED DOUBLE PRIME" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2037;" -->
+ <!-- * u:name="REVERSED TRIPLE PRIME" -->
+ <!-- * /> -->
+
+ <!-- * there is no low caret in roff -->
+ <xsl:output-character
+ character="&#x2038;"
+ u:name="CARET"
+ string="^"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x2039;"
+ u:name="SINGLE LEFT-POINTING ANGLE QUOTATION MARK"
+ string="\(fo"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <xsl:output-character
+ character="&#x203a;"
+ u:name="SINGLE RIGHT-POINTING ANGLE QUOTATION MARK"
+ string="\(fc"
+ u:block="General Punctuation"
+ u:class="quotes"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x203b;"
+ u:name="REFERENCE MARK"
+ string="*"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x203c;"
+ u:name="DOUBLE EXCLAMATION MARK"
+ string="!!"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x203d;"
+ u:name="INTERROBANG"
+ string="?!"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x203e;"
+ u:name="OVERLINE"
+ string="\(rn"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x203f;"
+ u:name="UNDERTIE"
+ string="\(ul"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2040;"
+ u:name="CHARACTER TIE"
+ string="\(rn"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2041;"
+ u:name="CARET INSERTION POINT"
+ u:entity="caret"
+ string="^"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2042;"
+ u:name="ASTERISM"
+ string="*"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff; just make bold hyphen -->
+ <xsl:output-character
+ character="&#x2043;"
+ u:name="HYPHEN BULLET"
+ u:entity="hybull"
+ string="\fB-\fR"
+ u:block="General Punctuation"
+ u:class="bullets"
+ />
+ <xsl:output-character
+ character="&#x2044;"
+ u:name="FRACTION SLASH"
+ string="\(sl"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2045;"
+ u:name="LEFT SQUARE BRACKET WITH QUILL"
+ string="["
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x2046;"
+ u:name="RIGHT SQUARE BRACKET WITH QUILL"
+ string="]"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x2047;"
+ u:name="DOUBLE QUESTION MARK"
+ string="??"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x2048;"
+ u:name="QUESTION EXCLAMATION MARK"
+ string="?!"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x2049;"
+ u:name="EXCLAMATION QUESTION MARK"
+ string="!?"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff -->
+ <xsl:output-character
+ character="&#x204a;"
+ u:name="TIRONIAN SIGN ET"
+ string="7"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff; just replace with un-reversed pilcrow -->
+ <xsl:output-character
+ character="&#x204b;"
+ u:name="REVERSED PILCROW SIGN"
+ string="\(ps"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff; just make regular bullet -->
+ <xsl:output-character
+ character="&#x204c;"
+ u:name="BLACK LEFTWARDS BULLET"
+ string="\(bu"
+ u:block="General Punctuation"
+ />
+ <!-- * not in roff; just make regular bullet -->
+ <xsl:output-character
+ character="&#x204d;"
+ u:name="BLACK RIGHTWARDS BULLET"
+ string="\(bu"
+ u:block="General Punctuation"
+ />
+ <xsl:output-character
+ character="&#x204e;"
+ u:name="LOW ASTERISK"
+ string="*"
+ u:block="General Punctuation"
+ />
+
+ <!-- * ............................................................... -->
+ <!-- * Remaining General Punctuation -->
+ <!-- * from x2050 to x206f -->
+ <!-- * only map a couple of these -->
+ <!-- * ............................................................... -->
+
+ <!-- * basically same as a normal space -->
+ <xsl:output-character
+ character="&#x205f;"
+ u:name="MEDIUM MATHEMATICAL SPACE"
+ string=" "
+ u:block="General Punctuation"
+ u:class="spaces"
+ />
+ <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, -->
+ <!-- * Line Breaking Properties"[1] says: -->
+ <!-- * -->
+ <!-- * The word joiner character [x2060 a.k.a "WJ"] is the preferred -->
+ <!-- * choice for an invisible character to keep other characters -->
+ <!-- * together that would otherwise be split across the line at a direct -->
+ <!-- * break. The character FEFF has the same effect, but because it is -->
+ <!-- * also used in an unrelated way as a byte order mark, the use of the -->
+ <!-- * WJ as the preferred interword glue simplifies the handling of FEFF. -->
+ <!-- * -->
+ <!-- * [1] http://www.unicode.org/reports/tr14/ -->
+ <!-- * -->
+ <!-- * The groff docs seem ambiguous about whether \& is a joiner and -->
+ <!-- * prevents breaks, but, based on testing, seems like it does -->
+ <xsl:output-character
+ character="&#x2060;"
+ u:name="WORD JOINER"
+ string="\&amp;"
+ u:block="General Punctuation"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: General Punctuation -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Superscripts and Subscripts -->
+ <!-- * x2070 to x209f -->
+ <!-- * For superscripts, just do a^n thing -->
+ <!-- * For subscripts, just do a_n -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2070;"
+ u:name="SUPERSCRIPT ZERO"
+ string="^0"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2071;"
+ u:name="SUPERSCRIPT LATIN SMALL LETTER I"
+ string="^i"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2074;"
+ u:name="SUPERSCRIPT FOUR"
+ string="^4"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2075;"
+ u:name="SUPERSCRIPT FIVE"
+ string="^5"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2076;"
+ u:name="SUPERSCRIPT SIX"
+ string="^6"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2077;"
+ u:name="SUPERSCRIPT SEVEN"
+ string="^7"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2078;"
+ u:name="SUPERSCRIPT EIGHT"
+ string="^8"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2079;"
+ u:name="SUPERSCRIPT NINE"
+ string="^9"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207a;"
+ u:name="SUPERSCRIPT PLUS SIGN"
+ string="^+"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207b;"
+ u:name="SUPERSCRIPT MINUS"
+ string="^-"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207c;"
+ u:name="SUPERSCRIPT EQUALS SIGN"
+ string="^="
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207d;"
+ u:name="SUPERSCRIPT LEFT PARENTHESIS"
+ string="^("
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207e;"
+ u:name="SUPERSCRIPT RIGHT PARENTHESIS"
+ string="^)"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x207f;"
+ u:name="SUPERSCRIPT LATIN SMALL LETTER N"
+ string="^n"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2080;"
+ u:name="SUBSCRIPT ZERO"
+ string="_0"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2081;"
+ u:name="SUBSCRIPT ONE"
+ string="_1"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2082;"
+ u:name="SUBSCRIPT TWO"
+ string="_2"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2083;"
+ u:name="SUBSCRIPT THREE"
+ string="_3"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2084;"
+ u:name="SUBSCRIPT FOUR"
+ string="_4"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2085;"
+ u:name="SUBSCRIPT FIVE"
+ string="_5"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2086;"
+ u:name="SUBSCRIPT SIX"
+ string="_6"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2087;"
+ u:name="SUBSCRIPT SEVEN"
+ string="_7"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2088;"
+ u:name="SUBSCRIPT EIGHT"
+ string="_8"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x2089;"
+ u:name="SUBSCRIPT NINE"
+ string="_9"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208a;"
+ u:name="SUBSCRIPT PLUS SIGN"
+ string="_+"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208b;"
+ u:name="SUBSCRIPT MINUS"
+ string="_-"
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208c;"
+ u:name="SUBSCRIPT EQUALS SIGN"
+ string="_="
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208d;"
+ u:name="SUBSCRIPT LEFT PARENTHESIS"
+ string="_("
+ u:block="Superscripts and Subscripts"
+ />
+ <xsl:output-character
+ character="&#x208e;"
+ u:name="SUBSCRIPT RIGHT PARENTHESIS"
+ string="_)"
+ u:block="Superscripts and Subscripts"
+ />
+ <!-- * ***************************************************************** -->
+ <!-- * End: Superscripts and Subscripts -->
+ <!-- * x2070 to x209f -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Currency Symbols -->
+ <!-- * x20a0 to x20b1 -->
+ <!-- * No mappings for any of these; just spell out -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x20a0;"
+ u:name="EURO-CURRENCY SIGN"
+ string="EUR"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a1;"
+ u:name="COLON SIGN"
+ string="COLON"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a2;"
+ u:name="CRUZEIRO SIGN"
+ string="CRUZEIRO"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a3;"
+ u:name="FRENCH FRANC SIGN"
+ string="FRANC"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a4;"
+ u:name="LIRA SIGN"
+ string="LIRA"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a5;"
+ u:name="MILL SIGN"
+ string="MILL"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a6;"
+ u:name="NAIRA SIGN"
+ string="NAIRA"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a7;"
+ u:name="PESETA SIGN"
+ string="PESETA"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a8;"
+ u:name="RUPEE SIGN"
+ string="RUPEE"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20a9;"
+ u:name="WON SIGN"
+ string="WON"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20aa;"
+ u:name="NEW SHEQEL SIGN"
+ string="SHEQEL"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20ab;"
+ u:name="DONG SIGN"
+ string="DONG"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20ac;"
+ u:name="EURO SIGN"
+ string="EUR"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20ad;"
+ u:name="KIP SIGN"
+ string="KIP"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20ae;"
+ u:name="TUGRIK SIGN"
+ string="TUGRIK"
+ u:block="Currency Symbols"
+ />
+ <xsl:output-character
+ character="&#x20af;"
+ u:name="DRACHMA SIGN"
+ string="DRACHMA"
+ u:block="Currency Symbols"
+ />
+ <!-- <xsl:output-character -->
+ <!-- character="&#x20b0;" -->
+ <!-- u:name="GERMAN PENNY SIGN" -->
+ <!-- string="?" -->
+ <!-- u:block="Currency Symbols" -->
+ <!-- /> -->
+ <xsl:output-character
+ character="&#x20b1;"
+ u:name="PESO SIGN"
+ string="PESO"
+ u:block="Currency Symbols"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Currency Symbols -->
+ <!-- * x20a0 to x20b1 -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Combining Diacritical Marks for Symbols -->
+ <!-- * x20d0 to x20ff -->
+ <!-- * - do nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Letterlike Symbols -->
+ <!-- * x2100 to x214b -->
+ <!-- * -->
+ <!-- * No mappings for any of these, and nothing appropriate for -->
+ <!-- * most of them; so, just spell out the ones that we can -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2103;"
+ u:name="DEGREE CELSIUS"
+ string="\(deC"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2105;"
+ u:name="CARE OF"
+ u:entity="incare"
+ string="c/o"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2109;"
+ u:name="DEGREE FAHRENHEIT"
+ string="\(deF"
+ u:block="Letterlike Symbols"
+ />
+ <!-- roff Ifraktur -->
+ <xsl:output-character
+ character="&#x2111;"
+ u:name="BLACK-LETTER CAPITAL I"
+ string="\(Im"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2113;"
+ u:name="SCRIPT SMALL L"
+ u:entity="ell"
+ string="l"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2116;"
+ u:name="NUMERO SIGN"
+ u:entity="numero"
+ string="No."
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2118;"
+ u:name="SCRIPT CAPITAL P"
+ u:entity="weierp"
+ string="\(wp"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x211c;"
+ u:name="BLACK-LETTER CAPITAL R"
+ u:entity="real"
+ string="\(Re"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x211e;"
+ u:name="PRESCRIPTION TAKE"
+ u:entity="rx"
+ string="Rx"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2120;"
+ u:name="SERVICE MARK"
+ string="(SM)"
+ u:block="Letterlike Symbols"
+ />
+ <!-- * We don't do "\(tm" for &#x2122; because for console output, groff -->
+ <!-- * just renders that as "tm", without any preceding space, parens, -->
+ <!-- * or anything. So it just gets run into the preceding word; i.e.: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Producttm -->
+ <!-- * -->
+ <!-- * That it probably not what most people would want. So we just -->
+ <!-- * render it as (TM) instead, Thus: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Product(TM) -->
+ <xsl:output-character
+ character="&#x2122;"
+ u:name="TRADE MARK SIGN"
+ u:entity="trade"
+ string="(TM)"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2126;"
+ u:name="OHM SIGN"
+ u:entity="ohm"
+ string="\(*W"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x212a;"
+ u:name="KELVIN SIGN"
+ string="K"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x212b;"
+ u:name="ANGSTROM SIGN"
+ u:entity="angst"
+ string="\(oA"
+ u:block="Letterlike Symbols"
+ />
+ <xsl:output-character
+ character="&#x2135;"
+ u:name="ALEF SYMBOL"
+ u:entity="aleph"
+ string="\(Ah"
+ u:block="Letterlike Symbols"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Letterlike Symbols -->
+ <!-- * x2100 to x214b -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Number Forms -->
+ <!-- * x2150 to x218f -->
+ <!-- * -->
+ <!-- * No mappings for any of these, and nothing appropriate for most -->
+ <!-- * of them; so, just spell out the ones that we can -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2153;"
+ u:name="VULGAR FRACTION ONE THIRD"
+ u:entity="frac13"
+ string="1/3"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2154;"
+ u:name="VULGAR FRACTION TWO THIRDS"
+ u:entity="frac23"
+ string="2/3"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2155;"
+ u:name="VULGAR FRACTION ONE FIFTH"
+ u:entity="frac15"
+ string="1/5"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2156;"
+ u:name="VULGAR FRACTION TWO FIFTHS"
+ u:entity="frac25"
+ string="2/5"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2157;"
+ u:name="VULGAR FRACTION THREE FIFTHS"
+ u:entity="frac35"
+ string="3/5"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2158;"
+ u:name="VULGAR FRACTION FOUR FIFTHS"
+ u:entity="frac45"
+ string="4/5"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2159;"
+ u:name="VULGAR FRACTION ONE SIXTH"
+ u:entity="frac16"
+ string="1/6"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215a;"
+ u:name="VULGAR FRACTION FIVE SIXTHS"
+ u:entity="frac56"
+ string="5/6"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215b;"
+ u:name="VULGAR FRACTION ONE EIGHTH"
+ u:entity="frac18"
+ string="1/8"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215c;"
+ u:name="VULGAR FRACTION THREE EIGHTHS"
+ u:entity="frac38"
+ string="3/8"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215d;"
+ u:name="VULGAR FRACTION FIVE EIGHTHS"
+ u:entity="frac58"
+ string="5/8"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215e;"
+ u:name="VULGAR FRACTION SEVEN EIGHTHS"
+ u:entity="frac78"
+ string="7/8"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x215f;"
+ u:name="FRACTION NUMERATOR ONE"
+ string="1/"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2160;"
+ u:name="ROMAN NUMERAL ONE"
+ string="I"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2161;"
+ u:name="ROMAN NUMERAL TWO"
+ string="II"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2162;"
+ u:name="ROMAN NUMERAL THREE"
+ string="III"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2163;"
+ u:name="ROMAN NUMERAL FOUR"
+ string="IV"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2164;"
+ u:name="ROMAN NUMERAL FIVE"
+ string="V"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2165;"
+ u:name="ROMAN NUMERAL SIX"
+ string="VI"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2166;"
+ u:name="ROMAN NUMERAL SEVEN"
+ string="VII"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2167;"
+ u:name="ROMAN NUMERAL EIGHT"
+ string="VIII"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2168;"
+ u:name="ROMAN NUMERAL NINE"
+ string="IX"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2169;"
+ u:name="ROMAN NUMERAL TEN"
+ string="X"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216a;"
+ u:name="ROMAN NUMERAL ELEVEN"
+ string="XI"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216b;"
+ u:name="ROMAN NUMERAL TWELVE"
+ string="XII"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216c;"
+ u:name="ROMAN NUMERAL FIFTY"
+ string="L"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216d;"
+ u:name="ROMAN NUMERAL ONE HUNDRED"
+ string="C"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216e;"
+ u:name="ROMAN NUMERAL FIVE HUNDRED"
+ string="D"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x216f;"
+ u:name="ROMAN NUMERAL ONE THOUSAND"
+ string="M"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2170;"
+ u:name="SMALL ROMAN NUMERAL ONE"
+ string="i"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2171;"
+ u:name="SMALL ROMAN NUMERAL TWO"
+ string="ii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2172;"
+ u:name="SMALL ROMAN NUMERAL THREE"
+ string="iii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2173;"
+ u:name="SMALL ROMAN NUMERAL FOUR"
+ string="iv"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2174;"
+ u:name="SMALL ROMAN NUMERAL FIVE"
+ string="v"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2175;"
+ u:name="SMALL ROMAN NUMERAL SIX"
+ string="vi"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2176;"
+ u:name="SMALL ROMAN NUMERAL SEVEN"
+ string="vii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2177;"
+ u:name="SMALL ROMAN NUMERAL EIGHT"
+ string="viii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2178;"
+ u:name="SMALL ROMAN NUMERAL NINE"
+ string="ix"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2179;"
+ u:name="SMALL ROMAN NUMERAL TEN"
+ string="x"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217a;"
+ u:name="SMALL ROMAN NUMERAL ELEVEN"
+ string="xi"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217b;"
+ u:name="SMALL ROMAN NUMERAL TWELVE"
+ string="xii"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217c;"
+ u:name="SMALL ROMAN NUMERAL FIFTY"
+ string="l"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217d;"
+ u:name="SMALL ROMAN NUMERAL ONE HUNDRED"
+ string="c"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217e;"
+ u:name="SMALL ROMAN NUMERAL FIVE HUNDRED"
+ string="d"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x217f;"
+ u:name="SMALL ROMAN NUMERAL ONE THOUSAND"
+ string="m"
+ u:block="Number Forms"
+ />
+ <xsl:output-character
+ character="&#x2180;"
+ u:name="ROMAN NUMERAL ONE THOUSAND C D"
+ string="CD"
+ u:block="Number Forms"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Number Forms -->
+ <!-- * x2150 to x218f -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Arrows -->
+ <!-- * x2190 to x21ff -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2190;"
+ u:name="LEFTWARDS ARROW"
+ u:entity="larr"
+ string="\(&lt;-"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2191;"
+ u:name="UPWARDS ARROW"
+ u:entity="uarr"
+ string="\(ua"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2192;"
+ u:name="RIGHTWARDS ARROW"
+ u:entity="rarr"
+ string="\(->"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2193;"
+ u:name="DOWNWARDS ARROW"
+ u:entity="darr"
+ string="\(da"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2194;"
+ u:name="LEFT RIGHT ARROW"
+ u:entity="harr"
+ string="\(&lt;>"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x2195;"
+ u:name="UP DOWN ARROW"
+ u:entity="varr"
+ string="\(va"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21b5;"
+ u:name="DOWNWARDS ARROW WITH CORNER LEFTWARDS"
+ u:entity="crarr"
+ string="\(CR"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d0;"
+ u:name="LEFTWARDS DOUBLE ARROW"
+ u:entity="lArr"
+ string="\(la"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d1;"
+ u:name="UPWARDS DOUBLE ARROW"
+ u:entity="uArr"
+ string="\(uA"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d2;"
+ u:name="RIGHTWARDS DOUBLE ARROW"
+ u:entity="rArr"
+ string="\(rA"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d3;"
+ u:name="DOWNWARDS DOUBLE ARROW"
+ u:entity="dArr"
+ string="\(dA"
+ u:block="Arrows"
+ />
+ <xsl:output-character
+ character="&#x21d4;"
+ u:name="LEFT RIGHT DOUBLE ARROW"
+ u:entity="hArr"
+ string="\(hA"
+ u:block="Arrows"
+ />
+ <!-- no roff equiv; render same as single arrow -->
+ <xsl:output-character
+ character="&#x21d5;"
+ u:name="UP DOWN DOUBLE ARROW"
+ u:entity="vArr"
+ string="\(va"
+ u:block="Arrows"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Mathematical Operators -->
+ <!-- * x2200 to x22ff -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2200;"
+ u:name="FOR ALL"
+ u:entity="forall"
+ string="\(fa"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2201;"
+ u:name="COMPLEMENT"
+ u:entity="comp"
+ string="C"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2202;"
+ u:name="PARTIAL DIFFERENTIAL"
+ u:entity="part"
+ string="\(pd"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2203;"
+ u:name="THERE EXISTS"
+ u:entity="exist"
+ string="\(te"
+ u:block="Mathematical Operators"
+ />
+ <!-- * no roff equiv -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2204;" -->
+ <!-- * u:name="THERE DOES NOT EXIST" -->
+ <!-- * u:entity="nexist" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2205;"
+ u:name="EMPTY SET"
+ u:entity="empty"
+ string="\(es"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2206;"
+ u:name="INCREMENT"
+ string="\(*D"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2207;"
+ u:name="NABLA"
+ u:entity="nabla"
+ string="\(gr"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2208;"
+ u:name="ELEMENT OF"
+ u:entity="isin"
+ string="\(mo"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2209;"
+ u:name="NOT AN ELEMENT OF"
+ u:entity="notin"
+ string="\(nm"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x220a;"
+ u:name="SMALL ELEMENT OF"
+ string="\(mo"
+ u:block="Mathematical Operators"
+ />
+
+ <xsl:output-character
+ character="&#x220b;"
+ u:name="CONTAINS AS MEMBER"
+ u:entity="ni"
+ string="\(st"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x220c;" -->
+ <!-- * u:name="DOES NOT CONTAIN AS MEMBER" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x220d;"
+ u:name="SMALL CONTAINS AS MEMBER"
+ string="\(st"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x220e;" -->
+ <!-- * u:name="END OF PROOF" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x220f;"
+ u:name="N-ARY PRODUCT"
+ u:entity="prod"
+ string="\(product"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2210;" -->
+ <!-- * u:name="N-ARY COPRODUCT" -->
+ <!-- * u:entity="coprod" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2211;"
+ u:name="N-ARY SUMMATION"
+ u:entity="sum"
+ string="\(sum"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2212;"
+ u:name="MINUS SIGN"
+ u:entity="minus"
+ string="\-"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2213;"
+ u:name="MINUS-OR-PLUS SIGN"
+ u:entity="mnplus"
+ string="\(+-"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2214;" -->
+ <!-- * u:name="DOT PLUS" -->
+ <!-- * u:entity="plusdo" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2215;"
+ u:name="DIVISION SLASH"
+ string="\(f/"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2216;"
+ u:name="SET MINUS"
+ u:entity="setmn"
+ string="\e"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2217;"
+ u:name="ASTERISK OPERATOR"
+ u:entity="lowast"
+ string="\(**"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2218;" -->
+ <!-- * u:name="RING OPERATOR" -->
+ <!-- * u:entity="compfn" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2219;"
+ u:name="BULLET OPERATOR"
+ string="\(bu"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x221a;"
+ u:name="SQUARE ROOT"
+ u:entity="radic"
+ string="\(sr"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x221b;" -->
+ <!-- * u:name="CUBE ROOT" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x221c;" -->
+ <!-- * u:name="FOURTH ROOT" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x221d;"
+ u:name="PROPORTIONAL TO"
+ u:entity="prop"
+ string="\(pt"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x221e;"
+ u:name="INFINITY"
+ u:entity="infin"
+ string="\(if"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x221f;" -->
+ <!-- * u:name="RIGHT ANGLE" -->
+ <!-- * u:entity="ang90" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2220;"
+ u:name="ANGLE"
+ u:entity="ang"
+ string="\(/_"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * 0x2221 to 0x2226 not in roff; -->
+ <!-- * but fake a parallel sign with vert bars -->
+
+ <xsl:output-character
+ character="&#x2225;"
+ u:name="PARALLEL TO"
+ u:entity="par"
+ string="\(bv\(bv"
+ u:block="Mathematical Operators"
+ />
+
+ <xsl:output-character
+ character="&#x2227;"
+ u:name="LOGICAL AND"
+ u:entity="and"
+ string="\(AN"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2228;"
+ u:name="LOGICAL OR"
+ u:entity="or"
+ string="\(OR"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2229;"
+ u:name="INTERSECTION"
+ u:entity="cap"
+ string="\(ca"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x222a;"
+ u:name="UNION"
+ u:entity="cup"
+ string="\(cu"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x222b;"
+ u:name="INTEGRAL"
+ u:entity="int"
+ string="\(is"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x222c;"
+ u:name="DOUBLE INTEGRAL"
+ string="\(is\(is"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x222d;"
+ u:name="TRIPLE INTEGRAL"
+ string="\(is\(is\(is"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * 0x222e to 0x2233 not in roff -->
+
+ <xsl:output-character
+ character="&#x2234;"
+ u:name="THEREFORE"
+ u:entity="there4"
+ string="\(tf"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2235;" -->
+ <!-- * u:name="BECAUSE" -->
+ <!-- * u:entity="becaus" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2236;"
+ u:name="RATIO"
+ string=":"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2237;"
+ u:name="PROPORTION"
+ string="::"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * 0x2238 to 0x223b not in roff -->
+
+ <xsl:output-character
+ character="&#x223c;"
+ u:name="TILDE OPERATOR"
+ u:entity="sim"
+ string="\(ti"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * 0x223d to 0x224b not in roff -->
+
+ <xsl:output-character
+ character="&#x2245;"
+ u:name="APPROXIMATELY EQUAL TO"
+ u:entity="cong"
+ string="\(=~"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2246;" -->
+ <!-- * u:name="APPROXIMATELY BUT NOT ACTUALLY EQUAL TO" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2247;" -->
+ <!-- * u:name="NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO" -->
+ <!-- * u:entity="ncong" -->
+ <!-- * /> -->
+
+ <xsl:output-character
+ character="&#x2248;"
+ u:name="ALMOST EQUAL TO"
+ u:entity="asymp"
+ string="\(~~"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x2249 to x2253 not in roff -->
+
+ <xsl:output-character
+ character="&#x2254;"
+ u:name="COLON EQUALS"
+ u:entity="colone"
+ string=":="
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2255;"
+ u:name="EQUALS COLON"
+ u:entity="ecolon"
+ string="=:"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x2256 to x2255 not in roff -->
+
+ <xsl:output-character
+ character="&#x225f;"
+ u:name="QUESTIONED EQUAL TO"
+ string="?="
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2260;"
+ u:name="NOT EQUAL TO"
+ u:entity="ne"
+ string="\(!="
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2261;"
+ u:name="IDENTICAL TO"
+ u:entity="equiv"
+ string="\(=="
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2262;" -->
+ <!-- * u:name="NOT IDENTICAL TO" -->
+ <!-- * u:entity="nequiv" -->
+ <!-- * /> -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2263;" -->
+ <!-- * u:name="STRICTLY EQUIVALENT TO" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2264;"
+ u:name="LESS-THAN OR EQUAL TO"
+ u:entity="le"
+ string="\(&lt;="
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2265;"
+ u:name="GREATER-THAN OR EQUAL TO"
+ u:entity="ge"
+ string="\(>="
+ u:block="Mathematical Operators"
+ />
+ <!-- * x2266 to x2269 not in roff -->
+
+ <xsl:output-character
+ character="&#x226a;"
+ u:name="MUCH LESS-THAN"
+ u:entity="Lt"
+ string="&lt;&lt;"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x226b;"
+ u:name="MUCH GREATER-THAN"
+ u:entity="Gt"
+ string=">>"
+ u:block="Mathematical Operators"
+ />
+ <!-- * x226c to x2281 not in roff -->
+
+ <xsl:output-character
+ character="&#x2282;"
+ u:name="SUBSET OF"
+ u:entity="sub"
+ string="\(sb"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2283;"
+ u:name="SUPERSET OF"
+ u:entity="sup"
+ string="\(sp"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2284;"
+ u:name="NOT A SUBSET OF"
+ u:entity="nsub"
+ string="\(nb"
+ u:block="Mathematical Operators"
+ />
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2285;" -->
+ <!-- * u:name="NOT A SUPERSET OF" -->
+ <!-- * u:entity="nsup" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2286;"
+ u:name="SUBSET OF OR EQUAL TO"
+ u:entity="sube"
+ string="\(ib"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2287;"
+ u:name="SUPERSET OF OR EQUAL TO"
+ u:entity="supe"
+ string="\(ip"
+ u:block="Mathematical Operators"
+ />
+ <!-- * x2288 to x2294 not in roff -->
+
+ <xsl:output-character
+ character="&#x2295;"
+ u:name="CIRCLED PLUS"
+ u:entity="oplus"
+ string="\(c+"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2296;"
+ u:name="CIRCLED MINUS"
+ u:entity="ominus"
+ string="\(c*"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x2297;"
+ u:name="CIRCLED TIMES"
+ u:entity="otimes"
+ string="\(c*"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x2298 to x22a4 not in roff -->
+
+ <xsl:output-character
+ character="&#x22a5;"
+ u:name="UP TACK"
+ u:entity="bottom"
+ string="\(pp"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x22a6 to x22bf not in roff -->
+
+ <xsl:output-character
+ character="&#x22c0;"
+ u:name="N-ARY LOGICAL AND"
+ string="\(AN"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22c1;"
+ u:name="N-ARY LOGICAL OR"
+ string="\(OR"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22c2;"
+ u:name="N-ARY INTERSECTION"
+ string="\(ca"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22c3;"
+ u:name="N-ARY UNION"
+ string="\(cu"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * not in roff -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x22c4;" -->
+ <!-- * u:name="DIAMOND OPERATOR" -->
+ <!-- * u:entity="diam" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x22c5;"
+ u:name="DOT OPERATOR"
+ u:entity="sdot"
+ string="\(md"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22c6;"
+ u:name="STAR OPERATOR"
+ u:entity="sstarf"
+ string="\(**"
+ u:block="Mathematical Operators"
+ />
+ <!-- * x22c7 to x22cd not in roff -->
+
+ <xsl:output-character
+ character="&#x22ce;"
+ u:name="CURLY LOGICAL OR"
+ u:entity="cuvee"
+ string="\(OR"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22cf;"
+ u:name="CURLY LOGICAL AND"
+ u:entity="cuwed"
+ string="\(AN"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x22d0 to x22d7 not in roff -->
+
+ <xsl:output-character
+ character="&#x22d8;"
+ u:name="VERY MUCH LESS-THAN"
+ u:entity="Ll"
+ string="&lt;&lt;&lt;"
+ u:block="Mathematical Operators"
+ />
+ <xsl:output-character
+ character="&#x22d9;"
+ u:name="VERY MUCH GREATER-THAN"
+ u:entity="Gg"
+ string=">>>"
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x22da to x22ee not in roff -->
+
+ <xsl:output-character
+ character="&#x22ef;"
+ u:name="MIDLINE HORIZONTAL ELLIPSIS"
+ string="\&amp;..."
+ u:block="Mathematical Operators"
+ />
+
+ <!-- * x22fo to x22ff not in roff -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Mathematical Operators -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Miscellaneous Technical -->
+ <!-- * x2300 to x23ff -->
+ <!-- * - do nothing except for angle brackets - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <xsl:output-character
+ character="&#x2329;"
+ u:name="LEFT-POINTING ANGLE BRACKET"
+ u:entity="lang"
+ string="\(la"
+ u:block="Miscellaneous Technical"
+ />
+ <xsl:output-character
+ character="&#x232a;"
+ u:name="RIGHT-POINTING ANGLE BRACKET"
+ u:entity="rang"
+ string="\(ra"
+ u:block="Miscellaneous Technical"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Control Pictures -->
+ <!-- * x2400 to x243f -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2400;"
+ u:name="SYMBOL FOR NULL"
+ string="NUL"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2401;"
+ u:name="SYMBOL FOR START OF HEADING"
+ string="SOH"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2402;"
+ u:name="SYMBOL FOR START OF TEXT"
+ string="STX"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2403;"
+ u:name="SYMBOL FOR END OF TEXT"
+ string="ETX"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2404;"
+ u:name="SYMBOL FOR END OF TRANSMISSION"
+ string="EOT"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2405;"
+ u:name="SYMBOL FOR ENQUIRY"
+ string="ENQ"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2406;"
+ u:name="SYMBOL FOR ACKNOWLEDGE"
+ string="ACK"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2407;"
+ u:name="SYMBOL FOR BELL"
+ string="BEL"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2408;"
+ u:name="SYMBOL FOR BACKSPACE"
+ string="BS"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2409;"
+ u:name="SYMBOL FOR HORIZONTAL TABULATION"
+ string="HT"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240a;"
+ u:name="SYMBOL FOR LINE FEED"
+ string="LF"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240b;"
+ u:name="SYMBOL FOR VERTICAL TABULATION"
+ string="VT"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240c;"
+ u:name="SYMBOL FOR FORM FEED"
+ string="FF"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240d;"
+ u:name="SYMBOL FOR CARRIAGE RETURN"
+ string="CR"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240e;"
+ u:name="SYMBOL FOR SHIFT OUT"
+ string="SO"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x240f;"
+ u:name="SYMBOL FOR SHIFT IN"
+ string="SI"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2410;"
+ u:name="SYMBOL FOR DATA LINK ESCAPE"
+ string="DLE"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2411;"
+ u:name="SYMBOL FOR DEVICE CONTROL ONE"
+ string="DC1"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2412;"
+ u:name="SYMBOL FOR DEVICE CONTROL TWO"
+ string="DC2"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2413;"
+ u:name="SYMBOL FOR DEVICE CONTROL THREE"
+ string="DC3"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2414;"
+ u:name="SYMBOL FOR DEVICE CONTROL FOUR"
+ string="DC4"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2415;"
+ u:name="SYMBOL FOR NEGATIVE ACKNOWLEDGE"
+ string="NAK"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2416;"
+ u:name="SYMBOL FOR SYNCHRONOUS IDLE"
+ string="SYN"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2417;"
+ u:name="SYMBOL FOR END OF TRANSMISSION BLOCK"
+ string="ETB"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2418;"
+ u:name="SYMBOL FOR CANCEL"
+ string="CAN"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2419;"
+ u:name="SYMBOL FOR END OF MEDIUM"
+ string="EM"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241a;"
+ u:name="SYMBOL FOR SUBSTITUTE"
+ string="SUB"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241b;"
+ u:name="SYMBOL FOR ESCAPE"
+ string="ESC"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241c;"
+ u:name="SYMBOL FOR FILE SEPARATOR"
+ string="FS"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241d;"
+ u:name="SYMBOL FOR GROUP SEPARATOR"
+ string="GS"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241e;"
+ u:name="SYMBOL FOR RECORD SEPARATOR"
+ string="RS"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x241f;"
+ u:name="SYMBOL FOR UNIT SEPARATOR"
+ string="US"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2420;"
+ u:name="SYMBOL FOR SPACE"
+ string="SP"
+ u:block="Control Pictures"
+ />
+ <xsl:output-character
+ character="&#x2421;"
+ u:name="SYMBOL FOR DELETE"
+ string="DEL"
+ u:block="Control Pictures"
+ />
+ <!-- * no roff equivs for x2422 and x2423 -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2422;" -->
+ <!-- * u:name="BLANK SYMBOL" -->
+ <!-- * string="?" -->
+ <!-- * u:block="Control Pictures" -->
+ <!-- * /> -->
+ <!-- * I think there should be a roff equiv for &blank;, but as far as I -->
+ <!-- * know, there is not... -->
+ <!-- * <xsl:output-character -->
+ <!-- * character="&#x2423;" -->
+ <!-- * u:name="OPEN BOX" -->
+ <!-- * u:entity="blank" -->
+ <!-- * string="?" -->
+ <!-- * u:block="Control Pictures" -->
+ <!-- * /> -->
+ <xsl:output-character
+ character="&#x2424;"
+ u:name="SYMBOL FOR NEWLINE"
+ string="NL"
+ u:block="Control Pictures"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Control Pictures -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Optical Character Recognition -->
+ <!-- * x2440 to x24ff -->
+ <!-- * - do nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Enclosed Alphanumerics -->
+ <!-- * x2460 to x24ff -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2460;"
+ u:name="CIRCLED DIGIT ONE"
+ string="1"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2461;"
+ u:name="CIRCLED DIGIT TWO"
+ string="2"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2462;"
+ u:name="CIRCLED DIGIT THREE"
+ string="3"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2463;"
+ u:name="CIRCLED DIGIT FOUR"
+ string="4"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2464;"
+ u:name="CIRCLED DIGIT FIVE"
+ string="5"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2465;"
+ u:name="CIRCLED DIGIT SIX"
+ string="6"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2466;"
+ u:name="CIRCLED DIGIT SEVEN"
+ string="7"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2467;"
+ u:name="CIRCLED DIGIT EIGHT"
+ string="8"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2468;"
+ u:name="CIRCLED DIGIT NINE"
+ string="9"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2469;"
+ u:name="CIRCLED NUMBER TEN"
+ string="10"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246a;"
+ u:name="CIRCLED NUMBER ELEVEN"
+ string="11"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246b;"
+ u:name="CIRCLED NUMBER TWELVE"
+ string="12"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246c;"
+ u:name="CIRCLED NUMBER THIRTEEN"
+ string="13"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246d;"
+ u:name="CIRCLED NUMBER FOURTEEN"
+ string="14"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246e;"
+ u:name="CIRCLED NUMBER FIFTEEN"
+ string="15"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x246f;"
+ u:name="CIRCLED NUMBER SIXTEEN"
+ string="16"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2470;"
+ u:name="CIRCLED NUMBER SEVENTEEN"
+ string="17"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2471;"
+ u:name="CIRCLED NUMBER EIGHTEEN"
+ string="18"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2472;"
+ u:name="CIRCLED NUMBER NINETEEN"
+ string="19"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2473;"
+ u:name="CIRCLED NUMBER TWENTY"
+ string="20"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2474;"
+ u:name="PARENTHESIZED DIGIT ONE"
+ string="(1)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2475;"
+ u:name="PARENTHESIZED DIGIT TWO"
+ string="(2)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2476;"
+ u:name="PARENTHESIZED DIGIT THREE"
+ string="(3)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2477;"
+ u:name="PARENTHESIZED DIGIT FOUR"
+ string="(4)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2478;"
+ u:name="PARENTHESIZED DIGIT FIVE"
+ string="(5)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2479;"
+ u:name="PARENTHESIZED DIGIT SIX"
+ string="(6)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247a;"
+ u:name="PARENTHESIZED DIGIT SEVEN"
+ string="(7)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247b;"
+ u:name="PARENTHESIZED DIGIT EIGHT"
+ string="(8)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247c;"
+ u:name="PARENTHESIZED DIGIT NINE"
+ string="(9)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247d;"
+ u:name="PARENTHESIZED NUMBER TEN"
+ string="(10)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247e;"
+ u:name="PARENTHESIZED NUMBER ELEVEN"
+ string="(11)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x247f;"
+ u:name="PARENTHESIZED NUMBER TWELVE"
+ string="(12)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2480;"
+ u:name="PARENTHESIZED NUMBER THIRTEEN"
+ string="(13)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2481;"
+ u:name="PARENTHESIZED NUMBER FOURTEEN"
+ string="(14)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2482;"
+ u:name="PARENTHESIZED NUMBER FIFTEEN"
+ string="(15)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2483;"
+ u:name="PARENTHESIZED NUMBER SIXTEEN"
+ string="(16)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2484;"
+ u:name="PARENTHESIZED NUMBER SEVENTEEN"
+ string="(17)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2485;"
+ u:name="PARENTHESIZED NUMBER EIGHTEEN"
+ string="(18)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2486;"
+ u:name="PARENTHESIZED NUMBER NINETEEN"
+ string="(19)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2487;"
+ u:name="PARENTHESIZED NUMBER TWENTY"
+ string="(20)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2488;"
+ u:name="DIGIT ONE FULL STOP"
+ string="1."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2489;"
+ u:name="DIGIT TWO FULL STOP"
+ string="2."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248a;"
+ u:name="DIGIT THREE FULL STOP"
+ string="3."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248b;"
+ u:name="DIGIT FOUR FULL STOP"
+ string="4."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248c;"
+ u:name="DIGIT FIVE FULL STOP"
+ string="5."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248d;"
+ u:name="DIGIT SIX FULL STOP"
+ string="6."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248e;"
+ u:name="DIGIT SEVEN FULL STOP"
+ string="7."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x248f;"
+ u:name="DIGIT EIGHT FULL STOP"
+ string="8."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2490;"
+ u:name="DIGIT NINE FULL STOP"
+ string="9."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2491;"
+ u:name="NUMBER TEN FULL STOP"
+ string="10."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2492;"
+ u:name="NUMBER ELEVEN FULL STOP"
+ string="11."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2493;"
+ u:name="NUMBER TWELVE FULL STOP"
+ string="12."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2494;"
+ u:name="NUMBER THIRTEEN FULL STOP"
+ string="13."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2495;"
+ u:name="NUMBER FOURTEEN FULL STOP"
+ string="14."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2496;"
+ u:name="NUMBER FIFTEEN FULL STOP"
+ string="15."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2497;"
+ u:name="NUMBER SIXTEEN FULL STOP"
+ string="16."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2498;"
+ u:name="NUMBER SEVENTEEN FULL STOP"
+ string="17."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x2499;"
+ u:name="NUMBER EIGHTEEN FULL STOP"
+ string="18."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249a;"
+ u:name="NUMBER NINETEEN FULL STOP"
+ string="19."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249b;"
+ u:name="NUMBER TWENTY FULL STOP"
+ string="20."
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249c;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER A"
+ string="(a)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249d;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER B"
+ string="(b)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249e;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER C"
+ string="(c)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x249f;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER D"
+ string="(d)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a0;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER E"
+ string="(e)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a1;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER F"
+ string="(f)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a2;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER G"
+ string="(g)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a3;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER H"
+ string="(h)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a4;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER I"
+ string="(i)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a5;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER J"
+ string="(j)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a6;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER K"
+ string="(k)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a7;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER L"
+ string="(l)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a8;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER M"
+ string="(m)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24a9;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER N"
+ string="(n)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24aa;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER O"
+ string="(o)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ab;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER P"
+ string="(p)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ac;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER Q"
+ string="(q)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ad;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER R"
+ string="(r)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ae;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER S"
+ string="(s)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24af;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER T"
+ string="(t)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b0;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER U"
+ string="(u)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b1;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER V"
+ string="(v)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b2;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER W"
+ string="(w)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b3;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER X"
+ string="(x)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b4;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER Y"
+ string="(y)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b5;"
+ u:name="PARENTHESIZED LATIN SMALL LETTER Z"
+ string="(z)"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b6;"
+ u:name="CIRCLED LATIN CAPITAL LETTER A"
+ string="A"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b7;"
+ u:name="CIRCLED LATIN CAPITAL LETTER B"
+ string="B"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b8;"
+ u:name="CIRCLED LATIN CAPITAL LETTER C"
+ string="C"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24b9;"
+ u:name="CIRCLED LATIN CAPITAL LETTER D"
+ string="D"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ba;"
+ u:name="CIRCLED LATIN CAPITAL LETTER E"
+ string="E"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24bb;"
+ u:name="CIRCLED LATIN CAPITAL LETTER F"
+ string="F"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24bc;"
+ u:name="CIRCLED LATIN CAPITAL LETTER G"
+ string="G"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24bd;"
+ u:name="CIRCLED LATIN CAPITAL LETTER H"
+ string="H"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24be;"
+ u:name="CIRCLED LATIN CAPITAL LETTER I"
+ string="I"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24bf;"
+ u:name="CIRCLED LATIN CAPITAL LETTER J"
+ string="J"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c0;"
+ u:name="CIRCLED LATIN CAPITAL LETTER K"
+ string="K"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c1;"
+ u:name="CIRCLED LATIN CAPITAL LETTER L"
+ string="L"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c2;"
+ u:name="CIRCLED LATIN CAPITAL LETTER M"
+ string="M"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c3;"
+ u:name="CIRCLED LATIN CAPITAL LETTER N"
+ string="N"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c4;"
+ u:name="CIRCLED LATIN CAPITAL LETTER O"
+ string="O"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c5;"
+ u:name="CIRCLED LATIN CAPITAL LETTER P"
+ string="P"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c6;"
+ u:name="CIRCLED LATIN CAPITAL LETTER Q"
+ string="Q"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c7;"
+ u:name="CIRCLED LATIN CAPITAL LETTER R"
+ string="R"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c8;"
+ u:name="CIRCLED LATIN CAPITAL LETTER S"
+ u:entity="oS"
+ string="S"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24c9;"
+ u:name="CIRCLED LATIN CAPITAL LETTER T"
+ string="T"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ca;"
+ u:name="CIRCLED LATIN CAPITAL LETTER U"
+ string="U"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24cb;"
+ u:name="CIRCLED LATIN CAPITAL LETTER V"
+ string="V"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24cc;"
+ u:name="CIRCLED LATIN CAPITAL LETTER W"
+ string="W"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24cd;"
+ u:name="CIRCLED LATIN CAPITAL LETTER X"
+ string="X"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ce;"
+ u:name="CIRCLED LATIN CAPITAL LETTER Y"
+ string="Y"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24cf;"
+ u:name="CIRCLED LATIN CAPITAL LETTER Z"
+ string="Z"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d0;"
+ u:name="CIRCLED LATIN SMALL LETTER A"
+ string="a"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d1;"
+ u:name="CIRCLED LATIN SMALL LETTER B"
+ string="b"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d2;"
+ u:name="CIRCLED LATIN SMALL LETTER C"
+ string="c"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d3;"
+ u:name="CIRCLED LATIN SMALL LETTER D"
+ string="d"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d4;"
+ u:name="CIRCLED LATIN SMALL LETTER E"
+ string="e"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d5;"
+ u:name="CIRCLED LATIN SMALL LETTER F"
+ string="f"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d6;"
+ u:name="CIRCLED LATIN SMALL LETTER G"
+ string="g"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d7;"
+ u:name="CIRCLED LATIN SMALL LETTER H"
+ string="h"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d8;"
+ u:name="CIRCLED LATIN SMALL LETTER I"
+ string="i"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24d9;"
+ u:name="CIRCLED LATIN SMALL LETTER J"
+ string="j"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24da;"
+ u:name="CIRCLED LATIN SMALL LETTER K"
+ string="k"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24db;"
+ u:name="CIRCLED LATIN SMALL LETTER L"
+ string="l"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24dc;"
+ u:name="CIRCLED LATIN SMALL LETTER M"
+ string="m"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24dd;"
+ u:name="CIRCLED LATIN SMALL LETTER N"
+ string="n"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24de;"
+ u:name="CIRCLED LATIN SMALL LETTER O"
+ string="o"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24df;"
+ u:name="CIRCLED LATIN SMALL LETTER P"
+ string="p"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e0;"
+ u:name="CIRCLED LATIN SMALL LETTER Q"
+ string="q"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e1;"
+ u:name="CIRCLED LATIN SMALL LETTER R"
+ string="r"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e2;"
+ u:name="CIRCLED LATIN SMALL LETTER S"
+ string="s"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e3;"
+ u:name="CIRCLED LATIN SMALL LETTER T"
+ string="t"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e4;"
+ u:name="CIRCLED LATIN SMALL LETTER U"
+ string="u"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e5;"
+ u:name="CIRCLED LATIN SMALL LETTER V"
+ string="b"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e6;"
+ u:name="CIRCLED LATIN SMALL LETTER W"
+ string="w"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e7;"
+ u:name="CIRCLED LATIN SMALL LETTER X"
+ string="x"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e8;"
+ u:name="CIRCLED LATIN SMALL LETTER Y"
+ string="y"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24e9;"
+ u:name="CIRCLED LATIN SMALL LETTER Z"
+ string="z"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ea;"
+ u:name="CIRCLED DIGIT ZERO"
+ string="0"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24eb;"
+ u:name="NEGATIVE CIRCLED NUMBER ELEVEN"
+ string="11"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ec;"
+ u:name="NEGATIVE CIRCLED NUMBER TWELVE"
+ string="12"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ed;"
+ u:name="NEGATIVE CIRCLED NUMBER THIRTEEN"
+ string="13"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ee;"
+ u:name="NEGATIVE CIRCLED NUMBER FOURTEEN"
+ string="14"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24ef;"
+ u:name="NEGATIVE CIRCLED NUMBER FIFTEEN"
+ string="15"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f0;"
+ u:name="NEGATIVE CIRCLED NUMBER SIXTEEN"
+ string="16"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f1;"
+ u:name="NEGATIVE CIRCLED NUMBER SEVENTEEN"
+ string="17"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f2;"
+ u:name="NEGATIVE CIRCLED NUMBER EIGHTEEN"
+ string="18"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f3;"
+ u:name="NEGATIVE CIRCLED NUMBER NINETEEN"
+ string="19"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f4;"
+ u:name="NEGATIVE CIRCLED NUMBER TWENTY"
+ string="20"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f5;"
+ u:name="DOUBLE CIRCLED DIGIT ONE"
+ string="1"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f6;"
+ u:name="DOUBLE CIRCLED DIGIT TWO"
+ string="2"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f7;"
+ u:name="DOUBLE CIRCLED DIGIT THREE"
+ string="3"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f8;"
+ u:name="DOUBLE CIRCLED DIGIT FOUR"
+ string="4"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24f9;"
+ u:name="DOUBLE CIRCLED DIGIT FIVE"
+ string="5"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fa;"
+ u:name="DOUBLE CIRCLED DIGIT SIX"
+ string="6"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fb;"
+ u:name="DOUBLE CIRCLED DIGIT SEVEN"
+ string="7"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fc;"
+ u:name="DOUBLE CIRCLED DIGIT EIGHT"
+ string="8"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fd;"
+ u:name="DOUBLE CIRCLED DIGIT NINE"
+ string="9"
+ u:block="Enclosed Alphanumerics"
+ />
+ <xsl:output-character
+ character="&#x24fe;"
+ u:name="DOUBLE CIRCLED NUMBER TEN"
+ string="10"
+ u:block="Enclosed Alphanumerics"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Enclosed Alphanumerics -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Box Drawing -->
+ <!-- * x2500 to x257f -->
+ <!-- * Block Elements -->
+ <!-- * x2580 to x259f -->
+ <!-- * - do nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Geometric Shapes -->
+ <!-- * x25a0 to x25f7 -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x25a1;"
+ u:name="WHITE SQUARE"
+ u:entity="squ"
+ string="\(sq"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25a2;"
+ u:name="WHITE SQUARE WITH ROUNDED CORNERS"
+ string="\(sq"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25ab;"
+ u:name="WHITE SMALL SQUARE"
+ string="\(sq"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25ba;"
+ u:name="BLACK RIGHT-POINTING POINTER"
+ string="\fB>\fR"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25bb;"
+ u:name="WHITE RIGHT-POINTING POINTER"
+ string=">"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25bc;"
+ u:name="BLACK DOWN-POINTING TRIANGLE"
+ string="\fBv\fR"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25bd;"
+ u:name="WHITE DOWN-POINTING TRIANGLE"
+ u:entity="xdtri"
+ string="v"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25c4;"
+ u:name="BLACK LEFT-POINTING POINTER"
+ string="\fB&lt;\fR"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25c5;"
+ u:name="WHITE LEFT-POINTING POINTER"
+ string="&lt;"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25c6;"
+ u:name="BLACK DIAMOND"
+ string="\(DI"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25c7;"
+ u:name="WHITE DIAMOND"
+ string="\(lz"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25ca;"
+ u:name="LOZENGE"
+ u:entity="loz"
+ string="\(lz"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25cb;"
+ u:name="WHITE CIRCLE"
+ u:entity="cir"
+ string="\(ci"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25cf;"
+ u:name="BLACK CIRCLE"
+ string="\(bu"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25e6;"
+ u:name="WHITE BULLET"
+ string="\(ci"
+ u:block="Geometric Shapes"
+ />
+ <xsl:output-character
+ character="&#x25ef;"
+ u:name="LARGE CIRCLE"
+ u:entity="xcirc"
+ string="\(ci"
+ u:block="Geometric Shapes"
+ />
+ <!-- * ***************************************************************** -->
+ <!-- * End: Geometric Shapes -->
+ <!-- * x25a0 to x25f7 -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Miscellaneous Symbols -->
+ <!-- * x2600 to x26ff -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x261a;"
+ u:name="BLACK LEFT POINTING INDEX"
+ string="\(lh"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x261b;"
+ u:name="BLACK RIGHT POINTING INDEX"
+ string="\(rh)"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x261c;"
+ u:name="WHITE LEFT POINTING INDEX"
+ string="\(lh"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x261e;"
+ u:name="WHITE RIGHT POINTING INDEX"
+ string="\(rh)"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2660;"
+ u:name="BLACK SPADE SUIT"
+ u:entity="spades"
+ string="\(SP"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2661;"
+ u:name="WHITE HEART SUIT"
+ string="\(HE"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2662;"
+ u:name="WHITE DIAMOND SUIT"
+ string="\(DI"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2663;"
+ u:name="BLACK CLUB SUIT"
+ u:entity="clubs"
+ string="\(CL"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2664;"
+ u:name="WHITE SPADE SUIT"
+ string="\(SP"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2665;"
+ u:name="BLACK HEART SUIT"
+ u:entity="hearts"
+ string="\(HE"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2666;"
+ u:name="BLACK DIAMOND SUIT"
+ u:entity="diams"
+ string="\(DI"
+ u:block="Miscellaneous Symbols"
+ />
+ <xsl:output-character
+ character="&#x2667;"
+ u:name="WHITE CLUB SUIT"
+ string="\(CL"
+ u:block="Miscellaneous Symbols"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Miscellaneous Symbols -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Dingbats -->
+ <!-- * x2700 to x27be -->
+ <!-- * No roff equiv for most of these; just map to something close -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#x2713;"
+ u:name="CHECK MARK"
+ u:entity="check"
+ string="\(OK"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2714;"
+ u:name="HEAVY CHECK MARK"
+ string="\fB\(OK\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2715;"
+ u:name="MULTIPLICATION X"
+ string="\(mu"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2716;"
+ u:name="HEAVY MULTIPLICATION X"
+ string="\fB\(mu\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2717;"
+ u:name="BALLOT X"
+ u:entity="cross"
+ string="\(mu"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2718;"
+ u:name="HEAVY BALLOT X"
+ string="\fB\(mu\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2719;"
+ u:name="OUTLINED GREEK CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271a;"
+ u:name="HEAVY GREEK CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271b;"
+ u:name="OPEN CENTRE CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271c;"
+ u:name="HEAVY OPEN CENTRE CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271d;"
+ u:name="LATIN CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271e;"
+ u:name="SHADOWED WHITE LATIN CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x271f;"
+ u:name="OUTLINED LATIN CROSS"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2720;"
+ u:name="MALTESE CROSS"
+ u:entity="malt"
+ string="\fB+\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2721;"
+ u:name="STAR OF DAVID"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2722;"
+ u:name="FOUR TEARDROP-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2723;"
+ u:name="FOUR BALLOON-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2724;"
+ u:name="HEAVY FOUR BALLOON-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2725;"
+ u:name="FOUR CLUB-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2726;"
+ u:name="BLACK FOUR POINTED STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2727;"
+ u:name="WHITE FOUR POINTED STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2729;"
+ u:name="STRESS OUTLINED WHITE STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272a;"
+ u:name="CIRCLED WHITE STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272b;"
+ u:name="OPEN CENTRE BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272c;"
+ u:name="BLACK CENTRE WHITE STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272d;"
+ u:name="OUTLINED BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272e;"
+ u:name="HEAVY OUTLINED BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x272f;"
+ u:name="PINWHEEL STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2730;"
+ u:name="SHADOWED WHITE STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2731;"
+ u:name="HEAVY ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2732;"
+ u:name="OPEN CENTRE ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2733;"
+ u:name="EIGHT SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2734;"
+ u:name="EIGHT POINTED BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2735;"
+ u:name="EIGHT POINTED PINWHEEL STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2736;"
+ u:name="SIX POINTED BLACK STAR"
+ u:entity="sext"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2737;"
+ u:name="EIGHT POINTED RECTILINEAR BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2738;"
+ u:name="HEAVY EIGHT POINTED RECTILINEAR BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2739;"
+ u:name="TWELVE POINTED BLACK STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273a;"
+ u:name="SIXTEEN POINTED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273b;"
+ u:name="TEARDROP-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273c;"
+ u:name="OPEN CENTRE TEARDROP-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273d;"
+ u:name="HEAVY TEARDROP-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273e;"
+ u:name="SIX PETALLED BLACK AND WHITE FLORETTE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x273f;"
+ u:name="BLACK FLORETTE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2740;"
+ u:name="WHITE FLORETTE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2741;"
+ u:name="EIGHT PETALLED OUTLINED BLACK FLORETTE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2742;"
+ u:name="CIRCLED OPEN CENTRE EIGHT POINTED STAR"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2743;"
+ u:name="HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2744;"
+ u:name="SNOWFLAKE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2745;"
+ u:name="TIGHT TRIFOLIATE SNOWFLAKE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2746;"
+ u:name="HEAVY CHEVRON SNOWFLAKE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2747;"
+ u:name="SPARKLE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2748;"
+ u:name="HEAVY SPARKLE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2749;"
+ u:name="BALLOON-SPOKED ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x274a;"
+ u:name="EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x274b;"
+ u:name="HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x274d;"
+ u:name="SHADOWED WHITE CIRCLE"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x274f;"
+ u:name="LOWER RIGHT DROP-SHADOWED WHITE SQUARE"
+ string="\(sq"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2750;"
+ u:name="UPPER RIGHT DROP-SHADOWED WHITE SQUARE"
+ string="\(sq"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2751;"
+ u:name="LOWER RIGHT SHADOWED WHITE SQUARE"
+ string="\(sq"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2752;"
+ u:name="UPPER RIGHT SHADOWED WHITE SQUARE"
+ string="\(sq"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2756;"
+ u:name="BLACK DIAMOND MINUS WHITE X"
+ string="*"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2758;"
+ u:name="LIGHT VERTICAL BAR"
+ string="\(bv"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2759;"
+ u:name="MEDIUM VERTICAL BAR"
+ string="\fB\(bv\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275a;"
+ u:name="HEAVY VERTICAL BAR"
+ string="\fB\(bv\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275b;"
+ u:name="HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT"
+ string="\fB\(oq\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275c;"
+ u:name="HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT"
+ string="\fB\(cq\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275d;"
+ u:name="HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT"
+ string="\fB\(lq\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x275e;"
+ u:name="HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT"
+ string="\fB\(rq\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2761;"
+ u:name="CURVED STEM PARAGRAPH SIGN ORNAMENT"
+ string="\(ps"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2762;"
+ u:name="HEAVY EXCLAMATION MARK ORNAMENT"
+ string="\fB!\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2763;"
+ u:name="HEAVY HEART EXCLAMATION MARK ORNAMENT"
+ string="\fB!\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2764;"
+ u:name="HEAVY BLACK HEART"
+ string="\fB\(HE\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2765;"
+ u:name="ROTATED HEAVY BLACK HEART BULLET"
+ string="\fB\(HE\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2766;"
+ u:name="FLORAL HEART"
+ string="\fB\(HE\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2767;"
+ u:name="ROTATED FLORAL HEART BULLET"
+ string="\fB\(HE\fR"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2776;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT ONE"
+ string="1"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2777;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT TWO"
+ string="2"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2778;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT THREE"
+ string="3"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2779;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT FOUR"
+ string="4"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277a;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT FIVE"
+ string="5"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277b;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT SIX"
+ string="6"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277c;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT SEVEN"
+ string="7"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277d;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT EIGHT"
+ string="8"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277e;"
+ u:name="DINGBAT NEGATIVE CIRCLED DIGIT NINE"
+ string="9"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x277f;"
+ u:name="DINGBAT NEGATIVE CIRCLED NUMBER TEN"
+ string="10"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2780;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT ONE"
+ string="1"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2781;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT TWO"
+ string="2"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2782;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT THREE"
+ string="3"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2783;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT FOUR"
+ string="4"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2784;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT FIVE"
+ string="5"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2785;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT SIX"
+ string="6"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2786;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN"
+ string="7"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2787;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT"
+ string="8"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2788;"
+ u:name="DINGBAT CIRCLED SANS-SERIF DIGIT NINE"
+ string="9"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2789;"
+ u:name="DINGBAT CIRCLED SANS-SERIF NUMBER TEN"
+ string="10"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278a;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE"
+ string="1"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278b;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO"
+ string="2"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278c;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE"
+ string="3"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278d;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR"
+ string="4"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278e;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE"
+ string="5"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x278f;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX"
+ string="6"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2790;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN"
+ string="7"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2791;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT"
+ string="8"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2792;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE"
+ string="9"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2793;"
+ u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN"
+ string="10"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2794;"
+ u:name="HEAVY WIDE-HEADED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x2799;"
+ u:name="HEAVY RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279b;"
+ u:name="DRAFTING POINT RIGHTWARDS ARROW"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279c;"
+ u:name="HEAVY ROUND-TIPPED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279d;"
+ u:name="TRIANGLE-HEADED RIGHTWARDS ARROW"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279e;"
+ u:name="HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x279f;"
+ u:name="DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a0;"
+ u:name="HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a1;"
+ u:name="BLACK RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a2;"
+ u:name="THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a3;"
+ u:name="THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a4;"
+ u:name="BLACK RIGHTWARDS ARROWHEAD"
+ string="\(->"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a7;"
+ u:name="SQUAT BLACK RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a8;"
+ u:name="HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27a9;"
+ u:name="RIGHT-SHADED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27aa;"
+ u:name="LEFT-SHADED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ab;"
+ u:name="BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ac;"
+ u:name="FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ad;"
+ u:name="HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ae;"
+ u:name="HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27af;"
+ u:name="NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b1;"
+ u:name="NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b2;"
+ u:name="CIRCLED HEAVY WHITE RIGHTWARDS ARROW"
+ string="\(rA"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b3;"
+ u:name="WHITE-FEATHERED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b4;"
+ u:name="BLACK-FEATHERED SOUTH EAST ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b5;"
+ u:name="BLACK-FEATHERED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b6;"
+ u:name="BLACK-FEATHERED NORTH EAST ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b7;"
+ u:name="HEAVY BLACK-FEATHERED SOUTH EAST ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b8;"
+ u:name="HEAVY BLACK-FEATHERED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27b9;"
+ u:name="HEAVY BLACK-FEATHERED NORTH EAST ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27ba;"
+ u:name="TEARDROP-BARBED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27bb;"
+ u:name="HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27bc;"
+ u:name="WEDGE-TAILED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27bd;"
+ u:name="HEAVY WEDGE-TAILED RIGHTWARDS ARROW"
+ string="\fR\(->\fB"
+ u:block="Dingbats"
+ />
+ <xsl:output-character
+ character="&#x27be;"
+ u:name="OPEN-OUTLINED RIGHTWARDS ARROW"
+ string="\fR\(rA\fB"
+ u:block="Dingbats"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Dingbats -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+ <!-- * Miscellaneous Mathematical Symbols -->
+ <!-- * x27c0 to x27ef -->
+ <!-- * Supplemental Arrows -->
+ <!-- * x27f0 to x297f -->
+ <!-- * Miscellaneous Mathematical Symbols -->
+ <!-- * x2980 to x29ff -->
+ <!-- * Supplemental Mathematical Operators -->
+ <!-- * x2a00 to x2aff -->
+ <!-- * - no nothing - -->
+ <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+ <!-- * ***************************************************************** -->
+ <!-- * Begin: Alphabetic Presentation Forms -->
+ <!-- * xfb00 to xfb04 -->
+ <!-- * ***************************************************************** -->
+
+ <xsl:output-character
+ character="&#xfb00;"
+ u:name="LATIN SMALL LIGATURE FF"
+ u:entity="fflig"
+ string="\(ff"
+ u:block="Alphabetic Presentation Forms"
+ />
+ <xsl:output-character
+ character="&#xfb01;"
+ u:name="LATIN SMALL LIGATURE FI"
+ u:entity="filig"
+ string="\(fi"
+ u:block="Alphabetic Presentation Forms"
+ />
+ <xsl:output-character
+ character="&#xfb02;"
+ u:name="LATIN SMALL LIGATURE FL"
+ u:entity="fllig"
+ string="\(fl"
+ u:block="Alphabetic Presentation Forms"
+ />
+ <xsl:output-character
+ character="&#xfb03;"
+ u:name="LATIN SMALL LIGATURE FFI"
+ u:entity="ffilig"
+ string="\(Fi"
+ u:block="Alphabetic Presentation Forms"
+ />
+ <xsl:output-character
+ character="&#xfb04;"
+ u:name="LATIN SMALL LIGATURE FFL"
+ u:entity="ffllig"
+ string="\(Fl"
+ u:block="Alphabetic Presentation Forms"
+ />
+
+ <!-- * ***************************************************************** -->
+ <!-- * End: Alphabetic Presentation Forms -->
+ <!-- * ***************************************************************** -->
+
+ <!-- * ================================================================= -->
+
+ <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, -->
+ <!-- * Line Breaking Properties"[1] says: -->
+ <!-- * -->
+ <!-- * The word joiner character [x2060 a.k.a "WJ"] is the preferred -->
+ <!-- * choice for an invisible character to keep other characters -->
+ <!-- * together that would otherwise be split across the line at a direct -->
+ <!-- * break. The character FEFF has the same effect, but because it is -->
+ <!-- * also used in an unrelated way as a byte order mark, the use of the -->
+ <!-- * WJ as the preferred interword glue simplifies the handling of FEFF. -->
+ <!-- * -->
+ <!-- * [1] http://www.unicode.org/reports/tr14/ -->
+ <!-- * -->
+ <!-- * We include it here anyway & map to the roff zero-width no-break -->
+ <xsl:output-character
+ character="&#xfeff;"
+ u:name="ZERO WIDTH NO-BREAK SPACE"
+ string="\&amp;"
+ u:block="Arabic Presentation Forms-B"
+ />
+</xsl:character-map>
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/docbook.xsl b/docs/xsl-generic/manpages/docbook.xsl
new file mode 100644
index 00000000..87c7ade8
--- /dev/null
+++ b/docs/xsl-generic/manpages/docbook.xsl
@@ -0,0 +1,293 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+ <xsl:import href="../html/docbook.xsl"/>
+ <xsl:import href="../html/manifest.xsl"/>
+ <!-- * html-synop.xsl file is generated by build -->
+ <xsl:import href="html-synop.xsl"/>
+ <xsl:output method="text"
+ encoding="UTF-8"
+ indent="no"/>
+ <!-- ********************************************************************
+ $Id: docbook.xsl 7153 2007-07-26 14:08:55Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <!-- ==================================================================== -->
+
+ <xsl:include href="../common/refentry.xsl"/>
+ <xsl:include href="../common/charmap.xsl"/>
+ <xsl:include href="param.xsl"/>
+ <xsl:include href="utility.xsl"/>
+ <xsl:include href="info.xsl"/>
+ <xsl:include href="other.xsl"/>
+ <xsl:include href="refentry.xsl"/>
+ <xsl:include href="block.xsl"/>
+ <xsl:include href="inline.xsl"/>
+ <xsl:include href="synop.xsl"/>
+ <xsl:include href="lists.xsl"/>
+ <xsl:include href="endnotes.xsl"/>
+ <xsl:include href="table.xsl"/>
+
+ <!-- * we rename the following just to avoid using params with "man" -->
+ <!-- * prefixes in the table.xsl stylesheet (because that stylesheet -->
+ <!-- * can potentially be reused for more than just man output) -->
+ <xsl:param name="tbl.font.headings" select="$man.font.table.headings"/>
+ <xsl:param name="tbl.font.title" select="$man.font.table.title"/>
+
+ <!-- ==================================================================== -->
+
+ <xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- * when we find a namespaced document, strip the -->
+ <!-- * namespace and then continue processing it. -->
+ <xsl:when test="//self::db:*">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:variable name="stripns">
+ <xsl:apply-templates mode="stripNS"/>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($stripns)"/>
+ </xsl:when>
+ <xsl:when test="//*[local-name() = 'refentry']">
+ <!-- * Check to see if we have any refentry children in this -->
+ <!-- * document; if so, process them. The reason we use -->
+ <!-- * local-name()=refentry (instead of just //refentry) to to -->
+ <!-- * check for refentry children is because this stylsheet is -->
+ <!-- * also post-processed by the stylesheet build to create the -->
+ <!-- * manpages/profile-docbook.xsl, and the refentry child check -->
+ <!-- * in the profile-docbook.xsl stylesheet won't work if we do -->
+ <!-- * a simple //refentry check. -->
+ <xsl:apply-templates select="//refentry"/>
+ <!-- * if $man.output.manifest.enabled is non-zero, -->
+ <!-- * generate a manifest file -->
+ <xsl:if test="not($man.output.manifest.enabled = 0)">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="filename">
+ <xsl:choose>
+ <xsl:when test="not($man.output.manifest.filename = '')">
+ <!-- * If a name for the manifest file is specified, -->
+ <!-- * use that name. -->
+ <xsl:value-of select="$man.output.manifest.filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, if user has unset -->
+ <!-- * $man.output.manifest.filename, default to -->
+ <!-- * using "MAN.MANIFEST" as the filename. Because -->
+ <!-- * $man.output.manifest.enabled is non-zero and -->
+ <!-- * so we must have a filename in order to -->
+ <!-- * generate the manifest. -->
+ <xsl:text>MAN.MANIFEST</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, the document does not contain any -->
+ <!-- * refentry elements, so log/emit message and stop. -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Erro</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text> no refentry</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>No refentry elements found</xsl:text>
+ <xsl:if test="$doc.title != ''">
+ <xsl:text> in "</xsl:text>
+ <xsl:choose>
+ <xsl:when test="string-length($doc.title) &gt; 30">
+ <xsl:value-of select="substring($doc.title,1,30)"/>
+ <xsl:text>...</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$doc.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"</xsl:text>
+ </xsl:if>
+ <xsl:text>.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <xsl:template match="refentry">
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <!-- * Just use the first refname found as the "name" of the man -->
+ <!-- * page (which may different from the "title"...) -->
+ <xsl:variable name="first.refname" select="refnamediv[1]/refname[1]"/>
+
+ <xsl:call-template name="root.messages">
+ <xsl:with-param name="refname" select="$first.refname"/>
+ </xsl:call-template>
+
+ <!-- * Because there are several times when we need to check *info of -->
+ <!-- * each refentry and its ancestors, we get those and store the -->
+ <!-- * data from them as a node-set in memory. -->
+
+ <!-- * Make a node-set with contents of *info -->
+ <xsl:variable name="get.info"
+ select="ancestor-or-self::*/*[substring(local-name(),
+ string-length(local-name()) - 3) = 'info']"
+ />
+ <xsl:variable name="info" select="exsl:node-set($get.info)"/>
+
+ <!-- * The get.refentry.metadata template is in -->
+ <!-- * ../common/refentry.xsl. It looks for metadata in $info -->
+ <!-- * and in various other places and then puts it into a form -->
+ <!-- * that's easier for us to digest. -->
+ <xsl:variable name="get.refentry.metadata">
+ <xsl:call-template name="get.refentry.metadata">
+ <xsl:with-param name="refname" select="$first.refname"/>
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="prefs" select="$refentry.metadata.prefs"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="refentry.metadata" select="exsl:node-set($get.refentry.metadata)"/>
+
+ <!-- * Assemble the various parts into a complete page, then store into -->
+ <!-- * $manpage.contents so that we can manipluate them further. -->
+ <xsl:variable name="manpage.contents">
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * top.comment = commented-out section at top of roff source -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="top.comment">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="date" select="$refentry.metadata/date"/>
+ <xsl:with-param name="title" select="$refentry.metadata/title"/>
+ <xsl:with-param name="manual" select="$refentry.metadata/manual"/>
+ <xsl:with-param name="source" select="$refentry.metadata/source"/>
+ </xsl:call-template>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * TH.title.line = title line in header/footer of man page -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="TH.title.line">
+ <!-- * .TH TITLE section extra1 extra2 extra3 -->
+ <!-- * -->
+ <!-- * According to the man(7) man page: -->
+ <!-- * -->
+ <!-- * extra1 = date, "the date of the last revision" -->
+ <!-- * extra2 = source, "the source of the command" -->
+ <!-- * extra3 = manual, "the title of the manual -->
+ <!-- * (e.g., Linux Programmer's Manual)" -->
+ <!-- * -->
+ <!-- * So, we end up with: -->
+ <!-- * -->
+ <!-- * .TH TITLE section date source manual -->
+ <!-- * -->
+ <xsl:with-param name="title" select="$refentry.metadata/title"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="extra1" select="$refentry.metadata/date"/>
+ <xsl:with-param name="extra2" select="$refentry.metadata/source"/>
+ <xsl:with-param name="extra3" select="$refentry.metadata/manual"/>
+ </xsl:call-template>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * Set default hyphenation, justification, indentation, and -->
+ <!-- * line-breaking -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="set.default.formatting"/>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * Main body of man page -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:apply-templates/>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * AUTHOR section -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="not($man.authors.section.enabled = 0)">
+ <xsl:call-template name="author.section">
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * COPYRIGHT section -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="not($man.copyright.section.enabled = 0)">
+ <xsl:call-template name="copyright.section">
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * NOTES list (only if user wants endnotes numbered and/or listed) -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="$man.endnotes.list.enabled != 0 or
+ $man.endnotes.are.numbered != 0">
+ <xsl:call-template name="endnotes.list"/>
+ </xsl:if>
+ </xsl:variable> <!-- * end of manpage.contents -->
+
+ <!-- * Prepare the page contents for final output, then store in -->
+ <!-- * $manpage.contents.prepared so the we can pass it on to the -->
+ <!-- * write.text.chunk() function -->
+ <xsl:variable name="manpage.contents.prepared">
+ <!-- * "Preparing" the page contents involves, at a minimum, -->
+ <!-- * doubling any backslashes found (so they aren't interpreted -->
+ <!-- * as roff escapes). -->
+ <!-- * -->
+ <!-- * If $charmap.enabled is true, "preparing" the page contents also -->
+ <!-- * involves applying a character map to convert Unicode symbols and -->
+ <!-- * special characters into corresponding roff escape sequences. -->
+ <xsl:call-template name="prepare.manpage.contents">
+ <xsl:with-param name="content" select="$manpage.contents"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- * Write the prepared page contents to disk to create -->
+ <!-- * the final man page. -->
+ <xsl:call-template name="write.man.file">
+ <xsl:with-param name="name" select="$first.refname"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="content" select="$manpage.contents.prepared"/>
+ </xsl:call-template>
+
+ <!-- * Generate "stub" (alias) pages (if any needed) -->
+ <xsl:call-template name="write.stubs">
+ <xsl:with-param name="first.refname" select="$first.refname"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/endnotes.xsl b/docs/xsl-generic/manpages/endnotes.xsl
new file mode 100644
index 00000000..f1c7480c
--- /dev/null
+++ b/docs/xsl-generic/manpages/endnotes.xsl
@@ -0,0 +1,535 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="db ng exsl xlink"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: endnotes.xsl 7254 2007-08-18 23:59:53Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+<!-- * -->
+<!-- * The templates in this file handle elements whose contents can't -->
+<!-- * be displayed completely within the main text flow in output, but -->
+<!-- * instead need to be displayed "out of line". Those elements are: -->
+<!-- * -->
+<!-- * - elements providing annotative text (annotation|alt|footnote) -->
+<!-- * - elements pointing at external resources (ulink, link, and -->
+<!-- * any elements with xlink:href attributes; and imagedata, -->
+<!-- * audiodata, and videodata - which (using their fileref -->
+<!-- * attribute) reference external files -->
+<!-- * -->
+<!-- * Within this stylesheet, the above are collectively referred to as -->
+<!-- * a "notesources". This stylesheet handles those notesources in -->
+<!-- * this way: -->
+<!-- * -->
+<!-- * 1. Constructs a numbered in-memory index of all unique "earmarks“ -->
+<!-- * of all notesources in the document. For each link, the -->
+<!-- * earmark is the value of its url or xlink:href attribute; for -->
+<!-- * each imagedata|audiodata|videodata: the value of its fileref -->
+<!-- * attribute; for each annotative element: its content. -->
+<!-- * -->
+<!-- * Notesources with the same earmark are assigned the same -->
+<!-- * number. -->
+<!-- * -->
+<!-- * By design, that index excludes any element whose whose string -->
+<!-- * value is identical to value of its url xlink:href attribute). -->
+<!-- * -->
+<!-- * 2. Puts a numbered marker inline to mark the place where the -->
+<!-- * notesource occurs in the main text flow. -->
+<!-- * -->
+<!-- * 3. Generates a numbered endnotes list (titled NOTES in English) -->
+<!-- * at the end of the man page, with the contents of each -->
+<!-- * notesource. -->
+<!-- * -->
+<!-- * Note that table footnotes are not listed in the endnotes list, -->
+<!-- * and are not handled by this stylesheet (they are instead handled -->
+<!-- * by the table.xsl stylesheet). -->
+<!-- * -->
+<!-- * Also, we don't get notesources in *info sections or Refmeta or -->
+<!-- * Refnamediv or Indexterm, because, in manpages output, contents of -->
+<!-- * those are either suppressed or are displayed out of document -->
+<!-- * order - for example, the Info/Author content gets moved to the -->
+<!-- * end of the page. So, if we were to number notesources in the -->
+<!-- * Author content, it would "throw off" the numbering at the -->
+<!-- * beginning of the main text flow. -->
+<!-- * -->
+<!-- * And for the record, one reason we don't use xsl:key to index the -->
+<!-- * earmarks is that we need to get and check the sets of -->
+<!-- * earmarks for uniqueness per-Refentry (not per-document). -->
+<!-- * -->
+<!-- * FIXME: as -->
+<!-- * with "repeat" URLS, alt instances that have the same string value -->
+<!-- * as preceding ones (likely to occur for repeat acroynyms and -->
+<!-- * abbreviations) should be listed only once in the endnotes list, -->
+<!-- * and numbered accordingly inline; split man.indent.width into -->
+<!-- * man.indent.width.value (default 4) and man.indent.width.units -->
+<!-- * (default n); also, if the first child of notesource is some block -->
+<!-- * content other than a (non-formal) paragraph, the current code -->
+<!-- * will probably end up generating a blank line after the -->
+<!-- * corresponding number in the endnotes list... we should probably -->
+<!-- * try to instead display the title of that block content there (if -->
+<!-- * there is one: e.g., the list title, admonition title, etc.) -->
+
+<!-- ==================================================================== -->
+
+<xsl:template name="get.all.earmark.indexes.in.current.document">
+ <!-- * Here we create a tree to hold indexes of all earmarks in -->
+ <!-- * the current document. If the current document contains -->
+ <!-- * multiple refentry instances, then this tree will contain -->
+ <!-- * multiple indexes. -->
+ <xsl:if test="$man.endnotes.are.numbered != 0">
+ <!-- * Only create earmark indexes if user wants numbered endnotes -->
+ <xsl:for-each select="//refentry">
+ <earmark.index>
+ <xsl:attribute name="idref">
+ <xsl:value-of select="generate-id()"/>
+ </xsl:attribute>
+ <xsl:for-each
+ select=".//*[self::*[@xlink:href]
+ or self::ulink
+ or self::imagedata
+ or self::audiodata
+ or self::videodata
+ or self::footnote[not(ancestor::table)]
+ or self::annotation
+ or self::alt]
+ [(node()
+ or self::imagedata
+ or self::audiodata
+ or self::videodata
+ )
+ and not(ancestor::refentryinfo)
+ and not(ancestor::info)
+ and not(ancestor::docinfo)
+ and not(ancestor::refmeta)
+ and not(ancestor::refnamediv)
+ and not(ancestor::indexterm)
+ and not(. = @url)
+ and not(. = @xlink:href)
+ and not(@url =
+ preceding::ulink[node()
+ and not(ancestor::refentryinfo)
+ and not(ancestor::info)
+ and not(ancestor::docinfo)
+ and not(ancestor::refmeta)
+ and not(ancestor::refnamediv)
+ and not(ancestor::indexterm)
+ and (generate-id(ancestor::refentry)
+ = generate-id(current()))]/@url)
+ and not(@xlink:href =
+ preceding::*[@xlink:href][node()
+ and not(ancestor::refentryinfo)
+ and not(ancestor::info)
+ and not(ancestor::docinfo)
+ and not(ancestor::refmeta)
+ and not(ancestor::refnamediv)
+ and not(ancestor::indexterm)
+ and (generate-id(ancestor::refentry)
+ = generate-id(current()))]/@xlink:href)
+ and not(@fileref =
+ preceding::*[@fileref][
+ not(ancestor::refentryinfo)
+ and not(ancestor::info)
+ and not(ancestor::docinfo)
+ and not(ancestor::refmeta)
+ and not(ancestor::refnamediv)
+ and not(ancestor::indexterm)
+ and (generate-id(ancestor::refentry)
+ = generate-id(current()))]/@fileref)]">
+ <earmark>
+ <xsl:attribute name="id">
+ <xsl:value-of select="generate-id()"/>
+ </xsl:attribute>
+ <xsl:attribute name="number">
+ <xsl:value-of select="position()"/>
+ </xsl:attribute>
+ <xsl:if test="@url|@xlink:href|@fileref">
+ <!-- * Only add a uri attribute if the notesource is -->
+ <!-- * a link or an element that references an external -->
+ <!-- * (an imagedata, audiodata, or videodata element) -->
+ <xsl:attribute name="uri">
+ <xsl:value-of select="@url|@xlink:href|@fileref"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy>
+ <xsl:copy-of select="node()"/>
+ </xsl:copy>
+ </earmark>
+ </xsl:for-each>
+ </earmark.index>
+ </xsl:for-each>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*[@xlink:href]|ulink
+ |imagedata|audiodata|videodata
+ |footnote[not(ancestor::table)]
+ |annotation|alt">
+ <xsl:variable name="all.earmark.indexes.in.current.document.rtf">
+ <xsl:call-template name="get.all.earmark.indexes.in.current.document"/>
+ </xsl:variable>
+ <xsl:variable name="all.earmark.indexes.in.current.document"
+ select="exsl:node-set($all.earmark.indexes.in.current.document.rtf)"/>
+ <xsl:variable name="all.earmarks.in.current.refentry.rtf">
+ <!-- * get the set of all earmarks for the ancestor Refentry of -->
+ <!-- * this notesource -->
+ <xsl:copy-of
+ select="$all.earmark.indexes.in.current.document/earmark.index
+ [@idref =
+ generate-id(current()/ancestor::refentry)]/earmark"/>
+ </xsl:variable>
+ <xsl:variable name="all.earmarks.in.current.refentry"
+ select="exsl:node-set($all.earmarks.in.current.refentry.rtf)"/>
+
+ <!-- * identify the earmark for the current element -->
+ <xsl:variable name="earmark">
+ <xsl:choose>
+ <xsl:when test="@url|@xlink:href">
+ <xsl:value-of select="@url|@xlink:href"/>
+ </xsl:when>
+ <xsl:when test="@fileref">
+ <xsl:value-of select="@fileref"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="generate-id()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="notesource.number">
+ <!-- * Get the number for this notesource -->
+ <!-- * -->
+ <!-- * If this is an imagedata, audiodata, or videodata element -->
+ <!-- * OR if it's a non-empty element AND its string value is not -->
+ <!-- * equal to the value of its url or xlink:href attribute (if -->
+ <!-- * it has one) AND user wants endnotes numbered, only then -->
+ <!-- * do we output a number for it -->
+ <xsl:if test="(self::imagedata or
+ self::audiodata or
+ self::videodata or
+ (node()
+ and not(. = @url)
+ and not(. = @xlink:href))
+ )
+ and $man.endnotes.are.numbered != 0">
+ <!-- * To select the number for this notesource, we -->
+ <!-- * check the index of all earmarks for the current refentry -->
+ <!-- * and find the number of the indexed earmark which matches -->
+ <!-- * this notesource's earmark. -->
+ <!-- * Note that multiple notesources may share the same -->
+ <!-- * numbered earmark; in that case, they get the same number. -->
+ <!-- * -->
+ <xsl:choose>
+ <xsl:when test="self::ulink or
+ self::*[@xlink:href] or
+ self::imagedata or
+ self::audiodata or
+ self::videodata">
+ <xsl:value-of select="$all.earmarks.in.current.refentry/earmark[@uri = $earmark]/@number"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$all.earmarks.in.current.refentry/earmark[@id = $earmark]/@number"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="notesource.contents">
+ <xsl:choose>
+ <!-- * check to see if the element is empty or not -->
+ <xsl:when test="node()">
+ <!-- * this is a non-empty node, so process its contents -->
+ <xsl:apply-templates/>
+ <xsl:if test="../footnote or ../annotation">
+ <!-- * if this element is a footnote or annotation, we need to -->
+ <!-- * do some further checking on it, so we can emit warnings -->
+ <!-- * about potential problems -->
+ <xsl:for-each select="node()">
+ <xsl:if test="local-name() != 'para' and local-name() !=''">
+ <!-- * for each node we find as a child of a footnote or -->
+ <!-- * annotation, if it's not a para or a text node, emit a -->
+ <!-- * warning... because in manpages output, we can't render -->
+ <!-- * block-level child content of an endnote properly unless -->
+ <!-- * it's wrapped in a para that has some "prefatory" text -->
+ <xsl:variable name="parent-name" select="local-name(..)"/>
+ <xsl:variable name="refname" select="ancestor::refentry/refnamediv[1]/refname[1]"/>
+ <xsl:variable name="endnote-number">
+ <xsl:call-template name="pad-string">
+ <!-- * endnote number may be 2 digits, so pad it with a space -->
+ <!-- * if we have only 1 digit -->
+ <xsl:with-param name="padVar" select="concat('#',$notesource.number)"/>
+ <xsl:with-param name="length" select="3"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>endnote </xsl:text>
+ <xsl:value-of select="$endnote-number"/>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Bad: </xsl:text>
+ <xsl:value-of select="$parent-name"/>
+ <!-- * figure out which occurance of this element type this -->
+ <!-- * instance is and output a number in square brackets so -->
+ <!-- * that end-user can know which element to fix -->
+ <xsl:text>[</xsl:text>
+ <xsl:value-of select="count(preceding::*[local-name() = $parent-name]) + 1"/>
+ <xsl:text>]</xsl:text>
+ <xsl:text> in source</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>endnote </xsl:text>
+ <xsl:value-of select="$endnote-number"/>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Has: </xsl:text>
+ <xsl:value-of select="$parent-name"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>endnote </xsl:text>
+ <xsl:value-of select="$endnote-number"/>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Fix: </xsl:text>
+ <xsl:value-of select="$parent-name"/>
+ <xsl:text>/</xsl:text>
+ <xsl:text>para/</xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise this is an empty link or an empty imagedata, -->
+ <!-- * audiodata, or videodata element, so we just get the -->
+ <!-- * value of its url, xlink:href, or fileref attribute. -->
+ <xsl:if test="$man.hyphenate.urls = 0
+ and $man.break.after.slash = 0">
+ <!-- * Add hyphenation suppression in URL output only if -->
+ <!-- * break.after.slash is also non-zero -->
+ <xsl:call-template name="suppress.hyphenation"/>
+ <xsl:text>\%</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$earmark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="self::ulink or self::*[@xlink:href]">
+ <!-- * This is a hyperlink, so we need to decide how to format -->
+ <!-- * the inline contents of the link (to underline or not). -->
+ <xsl:choose>
+ <!-- * if user wants links underlined, underline (ital) it -->
+ <xsl:when test="$man.links.are.underlined != 0">
+ <xsl:variable name="link.wrapper">
+ <xsl:value-of select="$notesource.contents"/>
+ </xsl:variable>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="exsl:node-set($link.wrapper)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * user doesn't want links underlined, so just display content -->
+ <xsl:value-of select="$notesource.contents"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="$notesource.number != ''">
+ <!-- * Format the number by placing it in square brackets. FIXME: -->
+ <!-- * This formatting should probably be made user-configurable, -->
+ <!-- * to allow something other than just square brackets; e.g., -->
+ <!-- * Angle brackets<10> or Braces{10} -->
+ <xsl:text>\&amp;[</xsl:text>
+ <xsl:value-of select="$notesource.number"/>
+ <xsl:text>]</xsl:text>
+ <!-- * Note that the reason for the \& before the opening bracket -->
+ <!-- * is to prevent any possible linebreak from being introduced -->
+ <!-- * between the opening bracket and the following text. -->
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="endnotes.list">
+ <!-- We have stored earmark indexes for all refentry instances in the -->
+ <!-- current document, with the ID for each index being the same ID as -->
+ <!-- its corresponding refentry; so we now need to get the ID for the -->
+ <!-- current refentry so we can grab its corresponding earmark index -->
+ <xsl:variable name="current.refentry.id">
+ <xsl:value-of select="generate-id(.)"/>
+ </xsl:variable>
+
+ <xsl:variable name="endnotes.rtf">
+ <xsl:variable name="all.earmark.indexes.in.current.document.rtf">
+ <xsl:call-template name="get.all.earmark.indexes.in.current.document"/>
+ </xsl:variable>
+ <xsl:variable name="all.earmark.indexes.in.current.document"
+ select="exsl:node-set($all.earmark.indexes.in.current.document.rtf)"/>
+ <xsl:copy-of
+ select="$all.earmark.indexes.in.current.document/earmark.index
+ [@idref = $current.refentry.id]/earmark"/>
+ </xsl:variable>
+
+ <xsl:variable name="endnotes" select="exsl:node-set($endnotes.rtf)"/>
+
+ <!-- * check to see if we have actually found any content to use as -->
+ <!-- * endnotes; if we have, we generate the endnotes list, if not, -->
+ <!-- * we do nothing -->
+ <xsl:if test="$endnotes/node()">
+ <xsl:call-template name="format.endnotes.list">
+ <xsl:with-param name="endnotes" select="$endnotes"/>
+ </xsl:call-template>
+ </xsl:if>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="format.endnotes.list">
+ <xsl:param name="endnotes"/>
+ <xsl:call-template name="mark.subheading"/>
+
+ <!-- * ======= make the endnotes-list section heading ============= -->
+ <xsl:text>.SH "</xsl:text>
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <!-- * if user has specified a heading, use that -->
+ <xsl:when test="$man.endnotes.list.heading != ''">
+ <xsl:value-of select="$man.endnotes.list.heading"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, get localized heading from gentext -->
+ <!-- * (in English, NOTES) -->
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Notes'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>"&#10;</xsl:text>
+
+ <!-- * ================ process each earmark ====================== -->
+ <xsl:for-each select="$endnotes/earmark">
+ <!-- * make paragraph with hanging indent, and starting with a -->
+ <!-- * number in the form " 1." (padded to $man.indent.width - 1) -->
+ <xsl:text>.IP</xsl:text>
+ <xsl:text> "</xsl:text>
+ <xsl:variable name="endnote.number">
+ <xsl:value-of select="@number"/>
+ <xsl:text>.</xsl:text>
+ </xsl:variable>
+ <xsl:call-template name="pad-string">
+ <xsl:with-param name="padVar" select="$endnote.number"/>
+ <!-- FIXME: the following assumes that $man.indent.width is in -->
+ <!-- en's; also, this should probably use $list.indent instead -->
+ <xsl:with-param name="length" select="$man.indent.width - 1"/>
+ </xsl:call-template>
+ <xsl:text>"</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- * ========================================================= -->
+ <!-- * print the notesource/endnote contents -->
+ <!-- * ========================================================= -->
+ <xsl:choose>
+ <xsl:when test="*/node()">
+ <!-- * if the earmark has non-empty child content, then -->
+ <!-- * its corresponding notesource is either a link or -->
+ <!-- * an instance of annotative text, so we want to -->
+ <!-- * display that content -->
+ <xsl:choose>
+ <xsl:when test="*/node()[name(.)!='']">
+ <!-- * if node is not text only, then process it as-is -->
+ <xsl:apply-templates select="*/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise node is text-only, so normalize it -->
+ <xsl:value-of select="normalize-space(*/node())"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, this earmark has empty content, -->
+ <!-- * which means its corresponding notesources is an -->
+ <!-- * imagedata, audiodata, or videodata instance; in -->
+ <!-- * that case, we use the value of the notesoures's -->
+ <!-- * @fileref attribute (which is stored in the -->
+ <!-- * earmark uri attribute) as the "contents" for -->
+ <!-- * this endnote/notesource -->
+ <xsl:value-of select="@uri"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- * ========================================================= -->
+ <!-- * print the URL for links -->
+ <!-- * ========================================================= -->
+ <!-- * In addition to the notesource contents, if the -->
+ <!-- * notesource is a link, we display the URL for the link. -->
+ <!-- * But for notesources that are imagedata, audiodata, or -->
+ <!-- * videodata instances, we don't want to (re)display the -->
+ <!-- * URL for those here, because for those elements, the -->
+ <!-- * notesource contents are the URL (the value of the -->
+ <!-- * @fileref attribute), and we have already rendered them. -->
+ <!-- * -->
+ <!-- * We know an earmark is a link if it has non-empty child -->
+ <!-- * content and a uri attribute; so we check for that -->
+ <!-- * condition here. -->
+ <xsl:if test="*/node() and @uri">
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <!-- * Add hyphenation suppression in URL output only if -->
+ <!-- * $break.after.slash is also non-zero -->
+ <xsl:if test="$man.hyphenate.urls = 0
+ and $man.break.after.slash = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ <xsl:text>\%</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="@uri"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RE</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/html-synop.xsl b/docs/xsl-generic/manpages/html-synop.xsl
new file mode 100644
index 00000000..a6182a01
--- /dev/null
+++ b/docs/xsl-generic/manpages/html-synop.xsl
@@ -0,0 +1,1605 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- ********************************************************************
+ $Id: synop.xsl 7250 2007-08-18 10:19:00Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- synopsis is in verbatim -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="cmdsynopsis">
+ <div>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <p>
+ <xsl:if test="..//processing-instruction('dbcmdlist')">
+ <!-- * Placing a dbcmdlist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all cmdsynopsis instances -->
+ <!-- * that are descendants of that element; so for any -->
+ <!-- * cmdsynopsis that is a descendant of an element containing -->
+ <!-- * a dbcmdlist PI, we need to output an a@id instance so that -->
+ <!-- * we will have something to link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis/command[1]" priority="2">
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="group|arg" name="group-or-arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$sepchar"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="group/arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:if test="preceding-sibling::*">
+ <xsl:value-of select="$arg.or.sep"/>
+ </xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <xsl:text>
+.
+</xsl:text>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="synopfragmentref">
+ <xsl:variable name="target" select="key('id',@linkend)"/>
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="$target" mode="synopfragment.number"/>
+ </xsl:variable>
+ <i>
+ <a href="#{@linkend}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </i>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <p>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <a name="{$id}">
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ </a>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcsynopsis">
+ <xsl:if test="..//processing-instruction('dbfunclist')">
+ <!-- * Placing a dbfunclist PI as a child of a particular element -->
+ <!-- * creates a hyperlinked list of all funcsynopsis instances that -->
+ <!-- * are descendants of that element; so for any funcsynopsis that is -->
+ <!-- * a descendant of an element containing a dbfunclist PI, we need -->
+ <!-- * to output an a@id instance so that we will have something to -->
+ <!-- * link to -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="informal.object"/>
+</xsl:template>
+
+<xsl:template match="funcsynopsisinfo">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates/>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype -->
+<!--
+
+funcprototype ::= (funcdef,
+ (void|varargs|paramdef+))
+
+funcdef ::= (#PCDATA|type|replaceable|function)*
+
+paramdef ::= (#PCDATA|type|replaceable|parameter|funcparams)*
+-->
+
+<xsl:template match="funcprototype">
+ <xsl:variable name="html-style">
+ <xsl:call-template name="pi.dbhtml_funcsynopsis-style">
+ <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="style">
+ <xsl:choose>
+ <xsl:when test="$html-style != ''">
+ <xsl:value-of select="$html-style"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$funcsynopsis.style"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:variable name="tabular-p"
+ select="$funcsynopsis.tabular.threshold &gt; 0
+ and string-length(.) &gt; $funcsynopsis.tabular.threshold"/>
+-->
+
+ <xsl:variable name="tabular-p" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$style = 'kr' and $tabular-p">
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'kr'">
+ <xsl:apply-templates select="." mode="kr-nontabular"/>
+ </xsl:when>
+ <xsl:when test="$style = 'ansi' and $tabular-p">
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, non-tabular -->
+
+<xsl:template match="funcprototype" mode="kr-nontabular">
+ <p>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:if test="paramdef">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
+ </xsl:if>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-nontabular">
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-nontabular">
+ <xsl:apply-templates select="parameter" mode="kr-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
+ <xsl:if test="preceding-sibling::paramdef"><xsl:text>
+.
+</xsl:text></xsl:if>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: kr, tabular -->
+
+<xsl:template match="funcprototype" mode="kr-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em">
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="kr-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td> </td>
+ <xsl:apply-templates select="." mode="kr-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ <xsl:if test="paramdef">
+ <table border="0" summary="Function argument synopsis" cellspacing="0" cellpadding="0">
+ <xsl:if test="following-sibling::funcprototype">
+ <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="paramdef" mode="kr-tabular-funcsynopsis-mode"/>
+ </table>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="kr-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="kr-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="kr-tabular">
+ <td>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="kr-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular">
+ <td>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
+ <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <tr>
+ <xsl:choose>
+ <xsl:when test="$type != '' and funcparams">
+ <td>
+ <code>
+ <xsl:copy-of select="$type"/>
+ </code>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type/following-sibling::*" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="kr-tabular-funcsynopsis-mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:when test="funcparams">
+ <td colspan="2">
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </td>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <code>
+ <xsl:apply-templates select="parameter" mode="kr-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode">
+ <code>(</code>
+ <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, non-tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-nontabular">
+ <p>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </p>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-nontabular">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-nontabular">
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-nontabular">
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-nontabular">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-nontabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-nontabular">
+ <code>(</code>
+ <xsl:apply-templates mode="ansi-nontabular"/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- funcprototype: ansi, tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <xsl:if test="following-sibling::funcprototype">
+ <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
+ </xsl:if>
+ <tr>
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ </td>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
+ <tr>
+ <td> </td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+</xsl:template>
+
+<xsl:template match="funcdef" mode="ansi-tabular">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ <xsl:text>(</xsl:text>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcdef/function" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="kr-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="void" mode="ansi-tabular">
+ <td>
+ <code>void)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="varargs" mode="ansi-tabular">
+ <td>
+ <xsl:text>...</xsl:text>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </td>
+ <td> </td>
+</xsl:template>
+
+<xsl:template match="paramdef" mode="ansi-tabular">
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type" mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
+ <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$type != '' and funcparams">
+ <td>
+ <xsl:copy-of select="$type"/>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type/following-sibling::*" mode="ansi-tabular"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*" mode="ansi-tabular"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:apply-templates select="parameter" mode="ansi-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="$funcsynopsis.decoration != 0">
+ <var class="pdparam">
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </var>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>
+ <xsl:apply-templates mode="ansi-tabular"/>
+ </code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="funcparams" mode="ansi-tabular">
+ <code>(</code>
+ <xsl:apply-templates/>
+ <code>)</code>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:variable name="default-classsynopsis-language">java</xsl:variable>
+
+<xsl:template match="classsynopsis |fieldsynopsis |methodsynopsis |constructorsynopsis |destructorsynopsis">
+ <xsl:param name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$default-classsynopsis-language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$language='java' or $language='Java'">
+ <xsl:apply-templates select="." mode="java"/>
+ </xsl:when>
+ <xsl:when test="$language='perl' or $language='Perl'">
+ <xsl:apply-templates select="." mode="perl"/>
+ </xsl:when>
+ <xsl:when test="$language='idl' or $language='IDL'">
+ <xsl:apply-templates select="." mode="idl"/>
+ </xsl:when>
+ <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
+ <xsl:apply-templates select="." mode="cpp"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unrecognized language on </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$language"/>
+ </xsl:message>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="language" select="$default-classsynopsis-language"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="synop-break">
+ <xsl:if test="parent::classsynopsis or (following-sibling::fieldsynopsis |following-sibling::methodsynopsis |following-sibling::constructorsynopsis |following-sibling::destructorsynopsis)">
+ <xsl:text>
+.
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+
+<!-- ===== Java ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="java">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ooclass[1]" mode="java"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text> extends</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text>implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="java"/>
+ <xsl:if test="ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text>throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="java"/>
+ </xsl:if>
+ <xsl:text> {</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="java"/>
+ <xsl:text>}</xsl:text>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="java">
+ <xsl:apply-templates mode="java"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="java">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="java">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="java">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>= </xsl:text>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>void </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="java">
+ <xsl:param name="indent">0</xsl:param>
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>,</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:if test="$indent &gt; 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string"> </xsl:with-param>
+ <xsl:with-param name="count" select="$indent + 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="java">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="java"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="java" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="decl">
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="java"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="java"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="java"/>
+ </xsl:variable>
+
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:copy-of select="$decl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="java">
+ <xsl:with-param name="indent" select="string-length($decl)"/>
+ </xsl:apply-templates>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    throws </xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="java"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="java"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== C++ ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="cpp">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="cpp"/>
+ <xsl:if test="ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="cpp"/>
+ </xsl:if>
+ <xsl:text> {</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="cpp"/>
+ <xsl:text>}</xsl:text>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="cpp">
+ <xsl:apply-templates mode="cpp"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="cpp">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="cpp">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>= </xsl:text>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>void </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="cpp">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="cpp">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="cpp"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="cpp" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="cpp"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="cpp"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    throws </xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="cpp"/>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== IDL ========================================================= -->
+
+<xsl:template match="classsynopsis" mode="idl">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>interface </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="idl"/>
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>: </xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/>
+ <xsl:if test="oointerface|ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="oointerface">
+ <xsl:text> implements</xsl:text>
+ <xsl:apply-templates select="oointerface" mode="idl"/>
+ <xsl:if test="ooexception">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="ooexception">
+ <xsl:text> throws</xsl:text>
+ <xsl:apply-templates select="ooexception" mode="idl"/>
+ </xsl:if>
+ <xsl:text> {</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="idl"/>
+ <xsl:text>}</xsl:text>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="idl">
+ <xsl:apply-templates mode="idl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="idl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="idl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="idl">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>= </xsl:text>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>void </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="idl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="idl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="idl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="idl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$start-modifiers" mode="idl"/>
+
+ <!-- type -->
+ <xsl:if test="local-name($notmod[1]) != 'methodname'">
+ <xsl:apply-templates select="$notmod[1]" mode="idl"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="methodname" mode="idl"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="methodparam" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ <xsl:if test="exceptionname">
+ <xsl:text>
+.
+</xsl:text>
+ <xsl:text>    raises(</xsl:text>
+ <xsl:apply-templates select="exceptionname" mode="idl"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="$end-modifiers" mode="idl"/>
+ </xsl:if>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ===== Perl ======================================================== -->
+
+<xsl:template match="classsynopsis" mode="perl">
+ <xsl:text>.sp
+</xsl:text><xsl:text>.nf
+</xsl:text><pre>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>package </xsl:text>
+ <xsl:apply-templates select="ooclass[1]" mode="perl"/>
+ <xsl:text>;</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+
+ <xsl:if test="ooclass[preceding-sibling::*]">
+ <xsl:text>@ISA = (</xsl:text>
+ <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
+ <xsl:text>);</xsl:text>
+ <xsl:text>
+.
+</xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="perl"/>
+ </pre><xsl:text/><xsl:text>.fi
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="classsynopsisinfo" mode="perl">
+ <xsl:apply-templates mode="perl"/>
+</xsl:template>
+
+<xsl:template match="ooclass|oointerface|ooexception" mode="perl">
+ <xsl:if test="preceding-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="modifier|package" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:if test="following-sibling::*">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="classname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="interfacename" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="exceptionname" mode="perl">
+ <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="fieldsynopsis" mode="perl">
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="parent::classsynopsis">
+ <xsl:text>  </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text>;</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<xsl:template match="type" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="varname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ <xsl:text> </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="initializer" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>= </xsl:text>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="void" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>void </xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodparam" mode="perl">
+ <xsl:if test="preceding-sibling::methodparam">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="parameter" mode="perl">
+ <span>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:apply-templates mode="perl"/>
+ </span>
+</xsl:template>
+
+<xsl:template mode="perl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
+ <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
+ <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
+ <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
+
+ <code>
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:text>sub </xsl:text>
+
+ <xsl:apply-templates select="methodname" mode="perl"/>
+ <xsl:text> { ... };</xsl:text>
+ </code>
+ <xsl:call-template name="synop-break"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
+<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
+<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
+<!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
+<!-- * per-mode matches for those linking elements in order for them -->
+<!-- * to be processed as expected. -->
+
+<xsl:template match="link|olink|xref" mode="java">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="cpp">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="idl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="link|olink|xref" mode="perl">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xsl-generic/manpages/info.xsl b/docs/xsl-generic/manpages/info.xsl
new file mode 100644
index 00000000..36dded00
--- /dev/null
+++ b/docs/xsl-generic/manpages/info.xsl
@@ -0,0 +1,630 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:date="http://exslt.org/dates-and-times"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="date exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: info.xsl 7087 2007-07-19 07:20:38Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <xsl:variable name="blurb-indent">
+ <xsl:choose>
+ <xsl:when test="not($man.indent.blurbs = 0)">
+ <xsl:value-of select="$man.indent.width"/>
+ </xsl:when>
+ <xsl:when test="not($man.indent.refsect = 0)">
+ <!-- * "zq" is the name of a register we set for -->
+ <!-- * preserving the original default indent value -->
+ <!-- * when $man.indent.refsect is non-zero; -->
+ <!-- * "u" is a roff unit specifier -->
+ <xsl:text>\n(zqu</xsl:text>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * otherwise, just leave it empty -->
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- ================================================================== -->
+ <!-- * About the $info param used in this stylesheet -->
+ <!-- * -->
+ <!-- * The $info param is a "master info" node set that contains -->
+ <!-- * the entire contents of the *info child of the current -->
+ <!-- * Refentry, plus the entire contents of the *info children of -->
+ <!-- * all ancestors of the current Refentry, in document order. -->
+ <!-- * -->
+ <!-- * We try to find a "best match" for selecting content from -->
+ <!-- * $infor; we look through it in reverse document order until we -->
+ <!-- * can find something usable. -->
+ <!-- * -->
+ <!-- * Specifically what the basic metadata-gathering XPath expression -->
+ <!-- * in this stylesheet does is: -->
+ <!-- * -->
+ <!-- * 1. Look through the entire "master info" node set.-->
+ <!-- * 2. Get the last node in the set that contains, for -->
+ <!-- * example, an Author element. That amounts to being the -->
+ <!-- * closest *info node to the Refentry - either its *info -->
+ <!-- * child, or the *info node of its closest ancestor that -->
+ <!-- * contains an Author. -->
+
+ <!-- ================================================================== -->
+ <!-- * Get user "refentry metadata" preferences -->
+ <!-- ================================================================== -->
+ <!-- * The DocBook XSL stylesheets include several user-configurable -->
+ <!-- * global stylesheet parameters for controlling refentry metadata -->
+ <!-- * gathering. Those parameters are not read directly by the other -->
+ <!-- * refentry metadata-gathering templates. Instead, they are read -->
+ <!-- * only by the get.refentry.metadata.prefs template, which -->
+ <!-- * assembles them into a structure that is then passed to the -->
+ <!-- * other refentry metadata-gathering template. -->
+
+ <xsl:variable name="get.refentry.metadata.prefs">
+ <!-- * get.refentry.metadata.prefs is in common/refentry.xsl -->
+ <xsl:call-template name="get.refentry.metadata.prefs"/>
+ </xsl:variable>
+
+ <xsl:variable name="refentry.metadata.prefs"
+ select="exsl:node-set($get.refentry.metadata.prefs)"/>
+
+ <!-- * ============================================================== -->
+ <!-- * Get content for Author metadata field. -->
+ <!-- * ============================================================== -->
+
+ <!-- * The make.roff.metatada.author template and metadata.author -->
+ <!-- * mode are used only for populating the Author field in the -->
+ <!-- * metadata "top comment" we embed in roff source of each page. -->
+
+ <xsl:template name="make.roff.metadata.author">
+ <xsl:param name="info"/>
+ <xsl:choose>
+ <xsl:when test="$info//author">
+ <xsl:apply-templates
+ select="(($info[//author])[last()]//author)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//corpauthor">
+ <xsl:apply-templates
+ select="(($info[//corpauthor])[last()]//corpauthor)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//editor">
+ <xsl:apply-templates
+ select="(($info[//editor])[last()]//editor)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//corpcredit">
+ <xsl:apply-templates
+ select="(($info[//corpcredit])[last()]//corpcredit)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//othercredit">
+ <xsl:apply-templates
+ select="(($info[//othercredit])[last()]//othercredit)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//collab">
+ <xsl:apply-templates
+ select="(($info[//collab])[last()]//collab)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//orgname">
+ <xsl:apply-templates
+ select="(($info[//orgname])[last()]//orgname)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:when test="$info//publishername">
+ <xsl:apply-templates
+ select="(($info[//publishername])[last()]//publishername)[1]"
+ mode="metadata.author"/>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * do nothing, no author info found -->
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="author|editor|othercredit|collab" mode="metadata.author">
+ <xsl:choose>
+ <xsl:when test="collabname">
+ <!-- * If this node is a Collab, then it should have a -->
+ <!-- * Collabname child, so get that. -->
+ <xsl:variable name="contents">
+ <xsl:apply-templates select="collabname"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, this node is not a Collab, but instead -->
+ <!-- * an author|editor|othercredit, which must have a name -->
+ <!-- * of some kind; so get that name -->
+ <xsl:call-template name="person.name.normalized"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test=".//email|address/otheraddr/ulink">
+ <xsl:text> </xsl:text>
+ <!-- * For each attribution found, use only the first e-mail -->
+ <!-- * address or ulink value found -->
+ <xsl:apply-templates select="(.//email|address/otheraddr/ulink)[1]"
+ mode="metadata.author"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="email|address/otheraddr/ulink" mode="metadata.author">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="self::email">
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ <xsl:when test="self::ulink">
+ <xsl:variable name="contents">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="corpauthor|corpcredit|orgname|publishername" mode="metadata.author">
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Assemble the AUTHOR/AUTHORS section -->
+ <!-- * ============================================================== -->
+
+ <xsl:template name="author.section">
+ <xsl:param name="info"/>
+ <!-- * The $info param is a "master info" node set that contains -->
+ <!-- * the entires contents of the *info child of the current -->
+ <!-- * Refentry, plus the entire contents of the *info children of -->
+ <!-- * all ancestors of the current Refentry, in document order. -->
+ <xsl:choose>
+ <xsl:when test="$info//author|$info//editor|$info//collab|
+ $info//corpauthor|$info//corpcredit|
+ $info//othercredit|$info/orgname|
+ $info/publishername|$info/publisher">
+ <xsl:variable name="authorcount">
+ <xsl:value-of
+ select="count(
+ $info//author|$info//editor|$info//collab|
+ $info//corpauthor|$info//corpcredit|
+ $info//othercredit)">
+ </xsl:value-of>
+ </xsl:variable>
+ <xsl:text>.SH "</xsl:text>
+ <xsl:call-template name="make.authorsecttitle">
+ <xsl:with-param name="authorcount" select="$authorcount"/>
+ </xsl:call-template>
+ <!-- * Now output all the actual author, editor, etc. content -->
+ <xsl:for-each
+ select="$info//author|$info//editor|$info//collab|
+ $info//corpauthor|$info//corpcredit|
+ $info//othercredit|$info/orgname|
+ $info/publishername|$info/publisher">
+ <xsl:apply-templates select="." mode="authorsect"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * do nothing, no author info found -->
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="make.authorsecttitle">
+ <!-- * If we have exactly one attributable person/entity, then output -->
+ <!-- * localized gentext for 'Author'; otherwise, output 'Authors'. -->
+ <xsl:param name="authorcount"/>
+ <xsl:param name="authorsecttitle">
+ <xsl:choose>
+ <xsl:when test="$authorcount = 1">
+ <xsl:text>Author</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Authors</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$authorsecttitle"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>"&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="author|editor|othercredit" mode="authorsect">
+ <xsl:variable name="person-name">
+ <xsl:call-template name="person.name.normalized"/>
+ </xsl:variable>
+ <!-- * If we have a person-name or email or ulink content, then -->
+ <!-- * output name and email or ulink content on the same line -->
+ <xsl:choose>
+ <xsl:when test="not($person-name = '') or .//email or address/otheraddr/ulink">
+ <xsl:text>.PP&#10;</xsl:text>
+ <!-- * Display person name in bold -->
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($person-name)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <!-- * Display e-mail address(es) and ulink(s) on same line as name -->
+ <xsl:apply-templates select=".//email|address/otheraddr/ulink" mode="authorsect"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- * Display affiliation(s) on separate lines -->
+ <xsl:apply-templates select="affiliation" mode="authorsect"/>
+ <!-- * Display direct-child addresses on separate lines -->
+ <xsl:apply-templates select="address" mode="authorsect"/>
+ <!-- * Call template for handling various attribution possibilities -->
+ <xsl:call-template name="attribution"/>
+ </xsl:template>
+
+ <xsl:template match="collab" mode="authorsect">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="collabname"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <!-- * Display e-mail address(es) and ulink(s) on same line as name -->
+ <xsl:apply-templates select=".//email|address/otheraddr/ulink" mode="authorsect"/>
+ <xsl:text>&#10;</xsl:text>
+ <!-- * Display affilition(s) on separate lines -->
+ <xsl:apply-templates select="affiliation" mode="authorsect"/>
+ </xsl:template>
+
+ <xsl:template match="corpauthor|corpcredit|orgname|publishername" mode="authorsect">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="self::publishername">
+ <!-- * Display localized "Publisher" gentext -->
+ <xsl:call-template name="publisher.attribution"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="publisher" mode="authorsect">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="publishername"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <!-- * Display e-mail address(es) and ulink(s) on same line as name -->
+ <xsl:apply-templates select=".//email|address/otheraddr/ulink" mode="authorsect"/>
+ <!-- * Display addresses on separate lines -->
+ <xsl:apply-templates select="address" mode="authorsect"/>
+ <!-- * Display localized "Publisher" literal -->
+ <xsl:call-template name="publisher.attribution"/>
+ </xsl:template>
+
+ <xsl:template name="publisher.attribution">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp -1n&#10;</xsl:text>
+ <xsl:text>.IP ""</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Publisher'"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="email|address/otheraddr/ulink" mode="authorsect">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*[descendant-or-self::email]
+ or preceding-sibling::address/otheraddr/ulink
+ or ancestor::address[preceding-sibling::*[descendant-or-self::email]]
+ or ancestor::address[preceding-sibling::address/otheraddr/ulink]">
+ <!-- * This is not the first instance, so do nothing. -->
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * This is first instances of an e-mail address or ulink, -->
+ <!-- * so put a space before it. -->
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- * Note that the reason for the \& character after the opening -->
+ <!-- * angle bracket and before the closing angle bracket is to -->
+ <!-- * prevent groff from inserting a linebreak at those points and -->
+ <!-- * outputting a hyphen character where the break occurs -->
+ <xsl:text>&lt;\&amp;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="self::email">
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ <xsl:when test="self::ulink">
+ <xsl:variable name="contents">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:text>\&amp;&gt;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not(following-sibling::*[descendant-or-self::email]
+ or following-sibling::address/otheraddr/ulink
+ or ancestor::address[following-sibling::*[descendant-or-self::email]]
+ or ancestor::address[following-sibling::address/otheraddr/ulink])">
+ <!-- * This is the final instance, so do nothing. -->
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Separate multiple e-mail addresses or ulinks with a comma -->
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="affiliation" mode="authorsect">
+ <!-- * Get the string value of the contents of this Affiliation. If the -->
+ <!-- * affiliation only contains an Address child whose only content is -->
+ <!-- * an email address or ulink, then these contents will end up empty. -->
+ <xsl:variable name="contents">
+ <xsl:apply-templates mode="authorsect"/>
+ </xsl:variable>
+ <!-- * If contents are actually empty except for an email address -->
+ <!-- * or ulink, then output nothing. -->
+ <xsl:if test="$contents != ''">
+ <xsl:text>.br&#10;</xsl:text>
+ <xsl:for-each select="shortaffil|jobtitle|orgname|orgdiv|address">
+ <!-- * only display output of nodes other than email or ulink -->
+ <xsl:apply-templates select="node()[not(self::email) and not(self::otheraddr/ulink)]"/>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * only add comma if the node has a child node other than -->
+ <!-- * an email address or ulink -->
+ <xsl:if test="child::node()[not(self::email) and not(self::otheraddr/ulink)]">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * put a line break after every Affiliation instance except -->
+ <!-- * the last one in the set -->
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="address" mode="authorsect">
+ <xsl:variable name="contents"
+ select="normalize-space(node()[not(self::email)
+ and not(self::otheraddr/ulink)])"/>
+ <!-- * If this contents of this Address do not contain anything except -->
+ <!-- * an email address or ulink, then output nothing. -->
+ <xsl:if test="$contents != ''">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ <!--* Skip email and ulink descendants of Address (rendered elsewhere) -->
+ <xsl:apply-templates select="node()[not(self::email) and not(self::otheraddr/ulink)]"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="attribution">
+ <!-- * Determine appropriate attribution for a particular person's role. -->
+ <xsl:choose>
+ <!-- * if we have a *blurb or contrib, just use that -->
+ <xsl:when test="contrib|personblurb|authorblurb">
+ <xsl:apply-templates select="contrib|personblurb|authorblurb" mode="authorsect"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:when>
+ <!-- * If we have no *blurb or contrib, but this is an Author or -->
+ <!-- * Editor, then render the corresponding localized gentext -->
+ <xsl:when test="self::author">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp -1n&#10;</xsl:text>
+ <xsl:text>.IP ""</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Author'"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ </xsl:when>
+ <xsl:when test="self::editor">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp -1n&#10;</xsl:text>
+ <xsl:text>.IP ""</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Editor'"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ </xsl:when>
+ <!-- * If we have no *blurb or contrib, but this is an Othercredit, -->
+ <!-- * check value of Class attribute and use corresponding gentext. -->
+ <xsl:when test="self::othercredit">
+ <xsl:choose>
+ <xsl:when test="@class and @class != 'other'">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp -1n&#10;</xsl:text>
+ <xsl:text>.IP ""</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="@class"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * We have an Othercredit, but not usable value for the Class -->
+ <!-- * attribute, so nothing to show, do nothing -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * We have no *blurb or contrib or anything else we can use to -->
+ <!-- * display appropriate attribution for this person, so do nothing -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="personblurb|authorblurb" mode="authorsect">
+ <xsl:call-template name="mark.up.blurb.or.contrib"/>
+ <!-- * yeah, it's possible for a *blurb to have a "title" -->
+ <xsl:apply-templates select="title"/>
+ <xsl:apply-templates select="*[not(self::title)]"/>
+ </xsl:template>
+
+ <xsl:template match="personblurb/title|authorblurb/title">
+ <!-- * always render period after title -->
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ <xsl:text>.</xsl:text>
+ <!-- * render space after Title+period if the title is followed -->
+ <!-- * by something element content -->
+ <xsl:if test="following-sibling::*[name() != '']">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="contrib" mode="authorsect">
+ <xsl:call-template name="mark.up.blurb.or.contrib"/>
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="mark.up.blurb.or.contrib">
+ <xsl:choose>
+ <!-- * If this *blurb has a sibling "name" element of some kind, then -->
+ <!-- * we are already outputting the name content, and we need to -->
+ <!-- * indent the *blurb content after that. -->
+ <xsl:when
+ test="../personname|../surname|../firstname
+ |../othername|../lineage|../honorific
+ |../affiliation|../email|../address">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp -1n&#10;</xsl:text>
+ <xsl:text>.IP ""</xsl:text>
+ <xsl:if test="not($blurb-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$blurb-indent"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, we have no "name" content, so don't indent; -->
+ <!-- * instead, decide if we need a .PP or just a .br -->
+ <xsl:choose>
+ <xsl:when test="not(preceding-sibling::*)">
+ <!-- * if this *blurb or contrib has no preceding -->
+ <!-- * siblings, then we need to start a new paragraph -->
+ <xsl:text>.PP</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise, this has no preceding siblings, so -->
+ <!-- * just put a linebreak -->
+ <xsl:text>.br</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Assemble the COPYRIGHT section -->
+ <!-- * ============================================================== -->
+ <!-- * The COPYRIGHT section is output only if a copyright or -->
+ <!-- * legalnotice is found. It contains the copyright contents -->
+ <!-- * followed by the legalnotice contents. -->
+ <xsl:template name="copyright.section">
+ <xsl:param name="info"/>
+ <xsl:choose>
+ <xsl:when test="$info//copyright|$info//legalnotice">
+ <xsl:text>.SH "</xsl:text>
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key">Copyright</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>"&#10;</xsl:text>
+ <!-- * the copyright mode="titlepage.mode" template is -->
+ <!-- * imported from the HTML stylesheets -->
+ <xsl:for-each select="
+ (($info[//copyright])[last()]//copyright)
+ | (($info[//legalnotice])[last()]//legalnotice)">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'copyright'">
+ <xsl:variable name="contents">
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * do nothing, no copyright or legalnotice found -->
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="legalnotice">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+
+ <!-- * suppress refmeta and all *info (we grab what we need from them -->
+ <!-- * elsewhere) -->
+
+ <xsl:template match="refmeta"/>
+
+ <xsl:template match="info|refentryinfo|referenceinfo|refsynopsisdivinfo
+ |refsectioninfo|refsect1info|refsect2info|refsect3info
+ |setinfo|bookinfo|articleinfo|chapterinfo|sectioninfo
+ |sect1info|sect2info|sect3info|sect4info|sect5info
+ |partinfo|prefaceinfo|appendixinfo|docinfo"/>
+
+ <!-- ============================================================== -->
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/inline.xsl b/docs/xsl-generic/manpages/inline.xsl
new file mode 100644
index 00000000..a88369c8
--- /dev/null
+++ b/docs/xsl-generic/manpages/inline.xsl
@@ -0,0 +1,190 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: inline.xsl 6843 2007-06-20 12:21:13Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="replaceable|varname">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="option|userinput|envar|errorcode|constant|markup">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="classname">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="command">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="type[not(ancestor::cmdsynopsis) and
+ not(ancestor::funcsynopsis)]">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="function[not(ancestor::cmdsynopsis) and
+ not(ancestor::funcsynopsis)]">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="parameter[not(ancestor::cmdsynopsis) and
+ not(ancestor::funcsynopsis)]">
+ <xsl:if test="$man.hyphenate.computer.inlines = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="filename">
+ <!-- * add hyphenation suppression in Filename output only if -->
+ <!-- * break.after.slash is also non-zero -->
+ <xsl:if test="$man.hyphenate.filenames = 0 and
+ $man.break.after.slash = 0">
+ <xsl:call-template name="suppress.hyphenation"/>
+ </xsl:if>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="emphasis">
+ <xsl:choose>
+ <xsl:when test="
+ @role = 'bold' or
+ @role = 'strong' or
+ @remap = 'B'">
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="optional">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ <xsl:apply-templates/>
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+</xsl:template>
+
+<xsl:template name="do-citerefentry">
+ <xsl:param name="refentrytitle" select="''"/>
+ <xsl:param name="manvolnum" select="''"/>
+ <xsl:variable name="title">
+ <xsl:value-of select="$refentrytitle"/>
+ </xsl:variable>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="exsl:node-set($title)"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$manvolnum"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="citerefentry">
+ <xsl:call-template name="do-citerefentry">
+ <xsl:with-param name="refentrytitle" select="refentrytitle"/>
+ <xsl:with-param name="manvolnum" select="manvolnum"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="trademark|productname">
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <!-- * Just use true Unicode chars for copyright, trademark, etc., -->
+ <!-- * symbols (by default, we later automatically translate them -->
+ <!-- * with the apply-string-subst-map template, or with the -->
+ <!-- * default character map, if man.charmap.enabled is true). -->
+ <xsl:when test="@class = 'copyright'">
+ <xsl:text>&#x00a9;</xsl:text>
+ </xsl:when>
+ <xsl:when test="@class = 'registered'">
+ <xsl:text>&#x00ae;</xsl:text>
+ </xsl:when>
+ <xsl:when test="@class = 'service'">
+ <xsl:text>&#x2120;</xsl:text>
+ </xsl:when>
+ <xsl:when test="@class = 'trade'">
+ <xsl:text>&#x2122;</xsl:text>
+ </xsl:when>
+ <!-- * for Trademark element, render a trademark symbol by default -->
+ <!-- * even if no "class" value is specified -->
+ <xsl:when test="self::trademark" >
+ <xsl:text>&#x2122;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * otherwise we have a Productname with no value for the -->
+ <!-- * "class" attribute, so don't render any symbol by default -->
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- * span seems to sneak through into output sometimes, possibly due -->
+<!-- * to failed Olink processing; so we need to catch it -->
+<xsl:template match="span">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="inlinemediaobject">
+ <xsl:apply-templates/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/lists.xsl b/docs/xsl-generic/manpages/lists.xsl
new file mode 100644
index 00000000..4c18c80c
--- /dev/null
+++ b/docs/xsl-generic/manpages/lists.xsl
@@ -0,0 +1,368 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: lists.xsl 6843 2007-06-20 12:21:13Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:variable name="list-indent">
+ <xsl:choose>
+ <xsl:when test="not($man.indent.lists = 0)">
+ <xsl:value-of select="$man.indent.width"/>
+ </xsl:when>
+ <xsl:when test="not($man.indent.refsect = 0)">
+ <!-- * "zq" is the name of a register we set for -->
+ <!-- * preserving the original default indent value -->
+ <!-- * when $man.indent.refsect is non-zero; -->
+ <!-- * "u" is a roff unit specifier -->
+ <xsl:text>\n(zqu</xsl:text>
+ </xsl:when>
+ <xsl:otherwise/> <!-- * otherwise, just leave it empty -->
+ </xsl:choose>
+</xsl:variable>
+
+<!-- ================================================================== -->
+
+<xsl:template match="para[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ simpara[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ remark[ancestor::listitem or ancestor::step or ancestor::glossdef]">
+ <xsl:call-template name="mixed-block"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="following-sibling::*[1][
+ self::para or
+ self::simpara or
+ self::remark
+ ]">
+ <!-- * Make sure multiple paragraphs within a list item don't -->
+ <!-- * merge together. -->
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="variablelist|glosslist">
+ <xsl:if test="title">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="title"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="varlistentry|glossentry">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:for-each select="term|glossterm">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * if we have multiple terms in the same varlistentry, generate -->
+ <!-- * a separator (", " by default) and/or an additional line -->
+ <!-- * break after each one except the last -->
+ <!-- * -->
+ <!-- * note that it is not valid to have multiple glossterms -->
+ <!-- * within a glossentry, so this logic never gets exercised -->
+ <!-- * for glossterms (every glossterm is always the last in -->
+ <!-- * its parent glossentry) -->
+ <xsl:value-of select="$variablelist.term.separator"/>
+ <xsl:if test="not($variablelist.term.break.after = '0')">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="varlistentry/term"/>
+<xsl:template match="glossentry/glossterm"/>
+
+<xsl:template match="variablelist[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ glosslist[ancestor::listitem or ancestor::step or ancestor::glossdef]">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::node() or
+ parent::para[following-sibling::node()] or
+ parent::simpara[following-sibling::node()] or
+ parent::remark[following-sibling::node()]">
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="varlistentry/listitem|glossentry/glossdef">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+ <!-- * We output a real bullet here (rather than, "\(bu", -->
+ <!-- * the roff bullet) because, when we do character-map -->
+ <!-- * processing before final output, the character-map will -->
+ <!-- * handle conversion of the &#x2022; to "\(bu" for us -->
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>\h'-</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text>0</xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>'</xsl:text>
+ <xsl:text>&#x2022;</xsl:text>
+ <xsl:text>\h'+</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text>0</xsl:text>
+ <xsl:value-of select="$list-indent - 1"/>
+ <xsl:text>'</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem|procedure/step">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>\h'-</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text>0</xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>'</xsl:text>
+ <xsl:if test="count(preceding-sibling::listitem) &lt; 9">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:number format="1."/>
+ <xsl:text>\h'+</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text>0</xsl:text>
+ <xsl:value-of select="$list-indent - 2"/>
+ <xsl:text>'</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="itemizedlist|orderedlist|procedure">
+ <xsl:if test="title">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="title"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <!-- * DocBook allows just about any block content to appear in -->
+ <!-- * lists before the actual list items, so we need to get that -->
+ <!-- * content (if any) before getting the list items -->
+ <xsl:apply-templates
+ select="*[not(self::listitem) and not(self::title)]"/>
+ <xsl:apply-templates select="listitem"/>
+ <!-- * If this list is a child of para and has content following -->
+ <!-- * it, within the same para, then add a blank line and move -->
+ <!-- * the left margin back to where it was -->
+ <xsl:if test="parent::para and following-sibling::node()">
+ <xsl:text>.sp&#10;</xsl:text>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="itemizedlist[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ orderedlist[ancestor::listitem or ancestor::step or ancestor::glossdef]|
+ procedure[ancestor::listitem or ancestor::step or ancestor::glossdef]">
+ <xsl:if test="title">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="title"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::node() or
+ parent::para[following-sibling::node()] or
+ parent::simpara[following-sibling::node()] or
+ parent::remark[following-sibling::node()]">
+ <xsl:text>.IP ""</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- ================================================================== -->
+
+<!-- * for simplelist type="inline", render it as a comma-separated list -->
+<xsl:template match="simplelist[@type='inline']">
+
+ <!-- * if dbchoice PI exists, use that to determine the choice separator -->
+ <!-- * (that is, equivalent of "and" or "or" in current locale), or literal -->
+ <!-- * value of "choice" otherwise -->
+ <xsl:variable name="localized-choice-separator">
+ <xsl:choose>
+ <xsl:when test="processing-instruction('dbchoice')">
+ <xsl:call-template name="select.choice.separator"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * empty -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="member">
+ <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ <xsl:if test="position() = last() - 1">
+ <xsl:if test="$localized-choice-separator != ''">
+ <xsl:value-of select="$localized-choice-separator"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<!-- * if simplelist type is not inline, render it as a one-column vertical -->
+<!-- * list (ignoring the values of the type and columns attributes) -->
+<xsl:template match="simplelist">
+ <xsl:for-each select="member">
+ <xsl:text>.IP ""</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ================================================================== -->
+
+<!-- * We output Segmentedlist as a table, using tbl(1) markup. There -->
+<!-- * is no option for outputting it in manpages in "list" form. -->
+<xsl:template match="segmentedlist">
+ <xsl:if test="title">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="title"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:text>.\" line length increase to cope w/ tbl weirdness&#10;</xsl:text>
+ <xsl:text>.ll +(\n(LLu * 62u / 100u)&#10;</xsl:text>
+ <!-- * .TS = "Table Start" -->
+ <xsl:text>.TS&#10;</xsl:text>
+ <!-- * first output the table "format" spec, which tells tbl(1) how -->
+ <!-- * how to format each row and column. -->
+ <xsl:for-each select=".//segtitle">
+ <!-- * l = "left", which hard-codes left-alignment for tabular -->
+ <!-- * output of all segmentedlist content -->
+ <xsl:text>l</xsl:text>
+ </xsl:for-each>
+ <!-- * last line of table format section must end with a dot -->
+ <xsl:text>.&#10;</xsl:text>
+ <!-- * optionally suppress output of segtitle -->
+ <xsl:choose>
+ <xsl:when test="$man.segtitle.suppress != 0">
+ <!-- * non-zero = "suppress", so do nothing -->
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * "0" = "do not suppress", so output the segtitle(s) -->
+ <xsl:apply-templates select=".//segtitle" mode="table-title"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ <!-- * .TE = "Table End" -->
+ <xsl:text>.TE&#10;</xsl:text>
+ <xsl:text>.\" line length decrease back to previous value&#10;</xsl:text>
+ <xsl:text>.ll -(\n(LLu * 62u / 100u)&#10;</xsl:text>
+ <!-- * put a blank line of space below the table -->
+ <xsl:text>.sp&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="segmentedlist/segtitle" mode="table-title">
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * tbl(1) treats tab characters as delimiters between -->
+ <!-- * cells; so we need to output a tab after each except -->
+ <!-- * segtitle except the last one -->
+ <xsl:text>&#09;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="segmentedlist/seglistitem">
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="segmentedlist/seglistitem/seg">
+ <!-- * the “T{" and “T}” stuff are delimiters to tell tbl(1) that -->
+ <!-- * the delimited contents are "text blocks" that groff(1) -->
+ <!-- * needs to process -->
+ <xsl:text>T{&#10;</xsl:text>
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($contents)"/>
+ <xsl:text>&#10;T}</xsl:text>
+ <xsl:choose>
+ <xsl:when test="position() = last()"/> <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * tbl(1) treats tab characters as delimiters between -->
+ <!-- * cells; so we need to output a tab after each except -->
+ <!-- * segtitle except the last one -->
+ <xsl:text>&#09;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/other.xsl b/docs/xsl-generic/manpages/other.xsl
new file mode 100644
index 00000000..3a3afee9
--- /dev/null
+++ b/docs/xsl-generic/manpages/other.xsl
@@ -0,0 +1,674 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:ng="http://docbook.org/docbook-ng"
+ xmlns:db="http://docbook.org/ns/docbook"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: other.xsl 6863 2007-06-23 09:08:06Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- * This file contains named templates related to things other than -->
+<!-- * just assembling the actual text of the main text flow of each man -->
+<!-- * page. This "other" stuff currently amounts to these steps: -->
+<!-- * -->
+<!-- * - get contents of the "map" used to convert special characters -->
+<!-- * - output boilerplate messages -->
+<!-- * - escape backslash, dot, dash, and apostrophe characters -->
+<!-- * - convert non-breaking spaces -->
+<!-- * - add a comment to top part of roff source of each page -->
+<!-- * - make a .TH title line (for controlling page header/footer) -->
+<!-- * - set hyphenation, alignment, indent & line-breaking defaults -->
+<!-- * - "prepare" the complete man page contents for final output -->
+<!-- * - write the actual man file to the filesystem -->
+<!-- * - write any "stub" pages to the filesystem -->
+<!-- * -->
+<!-- * The templates in this file are actually called only once per -->
+<!-- * each Refentry; they are just in a separate file for the purpose -->
+<!-- * of keeping things modular. -->
+
+<!-- ==================================================================== -->
+
+<xsl:preserve-space elements="*"/>
+
+<xsl:strip-space elements="
+abstract affiliation anchor answer appendix area areaset areaspec
+artheader article audiodata audioobject author authorblurb authorgroup
+beginpage bibliodiv biblioentry bibliography biblioset blockquote book
+bookbiblio bookinfo callout calloutlist caption caution chapter
+citerefentry cmdsynopsis co collab colophon colspec confgroup
+copyright dedication docinfo editor entrytbl epigraph equation
+example figure footnote footnoteref formalpara funcprototype
+funcsynopsis glossary glossdef glossdiv glossentry glosslist graphicco
+group highlights imagedata imageobject imageobjectco important index
+indexdiv indexentry indexterm informalequation informalexample
+informalfigure informaltable inlineequation inlinemediaobject
+itemizedlist itermset keycombo keywordset legalnotice listitem lot
+mediaobject mediaobjectco menuchoice msg msgentry msgexplan msginfo
+msgmain msgrel msgset msgsub msgtext note objectinfo
+orderedlist othercredit part partintro preface printhistory procedure
+programlistingco publisher qandadiv qandaentry qandaset question
+refentry reference refmeta refnamediv refsection refsect1 refsect1info refsect2
+refsect2info refsect3 refsect3info refsynopsisdiv refsynopsisdivinfo
+revhistory revision row sbr screenco screenshot sect1 sect1info sect2
+sect2info sect3 sect3info sect4 sect4info sect5 sect5info section
+sectioninfo seglistitem segmentedlist seriesinfo set setindex setinfo
+shortcut sidebar simplelist simplesect spanspec step subject
+subjectset substeps synopfragment table tbody textobject tfoot tgroup
+thead tip toc tocchap toclevel1 toclevel2 toclevel3 toclevel4
+toclevel5 tocpart varargs variablelist varlistentry videodata
+videoobject void warning subjectset
+
+classsynopsis
+constructorsynopsis
+destructorsynopsis
+fieldsynopsis
+methodparam
+methodsynopsis
+ooclass
+ooexception
+oointerface
+simplemsgentry
+manvolnum
+
+db:abstract db:affiliation db:anchor db:answer db:appendix db:area db:areaset db:areaspec
+db:artheader db:article db:audiodata db:audioobject db:author db:authorblurb db:authorgroup
+db:beginpage db:bibliodiv db:biblioentry db:bibliography db:biblioset db:blockquote db:book
+db:bookbiblio db:bookinfo db:callout db:calloutlist db:caption db:caution db:chapter
+db:citerefentry db:cmdsynopsis db:co db:collab db:colophon db:colspec db:confgroup
+db:copyright db:dedication db:docinfo db:editor db:entrytbl db:epigraph db:equation
+db:example db:figure db:footnote db:footnoteref db:formalpara db:funcprototype
+db:funcsynopsis db:glossary db:glossdef db:glossdiv db:glossentry db:glosslist db:graphicco
+db:group db:highlights db:imagedata db:imageobject db:imageobjectco db:important db:index
+db:indexdiv db:indexentry db:indexterm db:informalequation db:informalexample
+db:informalfigure db:informaltable db:inlineequation db:inlinemediaobject
+db:itemizedlist db:itermset db:keycombo db:keywordset db:legalnotice db:listitem db:lot
+db:mediaobject db:mediaobjectco db:menuchoice db:msg db:msgentry db:msgexplan db:msginfo
+db:msgmain db:msgrel db:msgset db:msgsub db:msgtext db:note db:objectinfo
+db:orderedlist db:othercredit db:part db:partintro db:preface db:printhistory db:procedure
+db:programlistingco db:publisher db:qandadiv db:qandaentry db:qandaset db:question
+db:refentry db:reference db:refmeta db:refnamediv db:refsection db:refsect1 db:refsect1info
+db:refsect2
+db:refsect2info db:refsect3 db:refsect3info db:refsynopsisdiv db:refsynopsisdivinfo
+db:revhistory db:revision db:row db:sbr db:screenco db:screenshot db:sect1 db:sect1info db:sect2
+db:sect2info db:sect3 db:sect3info db:sect4 db:sect4info db:sect5 db:sect5info db:section
+db:sectioninfo db:seglistitem db:segmentedlist db:seriesinfo db:set db:setindex db:setinfo
+db:shortcut db:sidebar db:simplelist db:simplesect db:spanspec db:step db:subject
+db:subjectset db:substeps db:synopfragment db:table db:tbody db:textobject db:tfoot db:tgroup
+db:thead db:tip db:toc db:tocchap db:toclevel1 db:toclevel2 db:toclevel3 db:toclevel4
+db:toclevel5 db:tocpart db:varargs db:variablelist db:varlistentry db:videodata
+db:videoobject db:void db:warning db:subjectset
+
+db:classsynopsis
+db:constructorsynopsis
+db:destructorsynopsis
+db:fieldsynopsis
+db:methodparam
+db:methodsynopsis
+db:ooclass
+db:ooexception
+db:oointerface
+db:simplemsgentry
+db:manvolnum
+"/>
+
+<!-- ==================================================================== -->
+<!-- * Get character map contents -->
+<!-- ==================================================================== -->
+
+ <xsl:variable name="man.charmap.contents">
+ <xsl:if test="$man.charmap.enabled != 0">
+ <xsl:call-template name="read-character-map">
+ <xsl:with-param name="use.subset" select="$man.charmap.use.subset"/>
+ <xsl:with-param name="subset.profile" select="$man.charmap.subset.profile"/>
+ <xsl:with-param name="uri">
+ <xsl:choose>
+ <xsl:when test="$man.charmap.uri != ''">
+ <xsl:value-of select="$man.charmap.uri"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'../manpages/charmap.groff.xsl'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="root.messages">
+ <xsl:param name="refname"/>
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+ <!-- Example:
+ <xsl:if test="//foo">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$refname"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>limitation</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Output for foo element is not yet supported.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- * Escape roff special chars -->
+<!-- ==================================================================== -->
+
+<!-- ******************************************************************** -->
+<!-- * -->
+<!-- * The backslash, dot, dash, and apostrophe (\, ., -, ') characters -->
+<!-- * have special meaning for roff, so before we do any other -->
+<!-- * processing, we must escape those characters where they appear in -->
+<!-- * the source content. -->
+<!-- * -->
+<!-- * Here we also deal with replacing U+00a0 (non-breaking space) with -->
+<!-- * its roff equivalent -->
+<!-- * -->
+<!-- ******************************************************************** -->
+
+<xsl:template match="//refentry//text()">
+ <xsl:call-template name="escape.roff.specials">
+ <xsl:with-param name="content">
+ <xsl:value-of select="."/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.roff.specials">
+ <xsl:param name="content"/>
+ <xsl:call-template name="convert.nobreak-space">
+ <xsl:with-param name="content">
+ <xsl:call-template name="escape.apostrophe">
+ <xsl:with-param name="content">
+ <xsl:call-template name="escape.dash">
+ <xsl:with-param name="content">
+ <xsl:call-template name="escape.dot">
+ <xsl:with-param name="content">
+ <xsl:call-template name="escape.backslash">
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.backslash">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">\</xsl:with-param>
+ <!-- * we use "\e" instead of "\\" because the groff docs say -->
+ <!-- * that's the correct thing to do; also because testing -->
+ <!-- * shows that "\\" doesn't always work as expected; for -->
+ <!-- * example, "\\" within a table seems to mess things up -->
+ <xsl:with-param name="replacement">\e</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.dot">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">.</xsl:with-param>
+ <xsl:with-param name="replacement">\.</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.dash">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">-</xsl:with-param>
+ <xsl:with-param name="replacement">\-</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="escape.apostrophe">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">'</xsl:with-param>
+ <xsl:with-param name="replacement">\'</xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="convert.nobreak-space">
+ <xsl:param name="content"/>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target">&#x00a0;</xsl:with-param>
+ <!-- * A no-break space can be written two ways in roff; the -->
+ <!-- * difference, according to the "Page Motions" node in the -->
+ <!-- * groff info page, is: -->
+ <!-- * -->
+ <!-- * "\ " = -->
+ <!-- * An unbreakable and unpaddable (i.e. not expanded -->
+ <!-- * during filling) space. -->
+ <!-- * -->
+ <!-- * "\~" = -->
+ <!-- * An unbreakable space that stretches like a normal -->
+ <!-- * inter-word space when a line is adjusted." -->
+ <!-- * -->
+ <!-- * Unfortunately, roff seems to do some weird things with -->
+ <!-- * long lines that only have words separated by "\~" -->
+ <!-- * spaces, so it's safer just to stick with the "\ " space -->
+ <xsl:with-param name="replacement">\ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- * top.comment generates a comment containing metadata for the man -->
+<!-- * page; for example, Author, Generator, and Date information -->
+
+ <xsl:template name="top.comment">
+ <xsl:param name="info"/>
+ <xsl:param name="date"/>
+ <xsl:param name="title"/>
+ <xsl:param name="manual"/>
+ <xsl:param name="source"/>
+ <xsl:text>.\" Title: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$title"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Author: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content">
+ <xsl:call-template name="make.roff.metadata.author">
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Generator: DocBook </xsl:text>
+ <xsl:value-of select="$DistroTitle"/>
+ <xsl:text> v</xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$VERSION"/>
+ </xsl:call-template>
+ <xsl:text> &lt;http://docbook.sf.net/></xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Date: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$date"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Manual: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$manual"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" Source: </xsl:text>
+ <xsl:call-template name="replace.dots.and.dashes">
+ <xsl:with-param name="content" select="$source"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\"</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+<!-- ==================================================================== -->
+
+ <xsl:template name="TH.title.line">
+
+ <!-- * The exact way that .TH contents are displayed is system- -->
+ <!-- * dependent; it varies somewhat between OSes and roff -->
+ <!-- * versions. Below is a description of how Linux systems with -->
+ <!-- * a modern groff seem to render .TH contents. -->
+ <!-- * -->
+ <!-- * title(section) extra3 title(section) <- page header -->
+ <!-- * extra2 extra1 title(section) <- page footer-->
+ <!-- * -->
+ <!-- * Or, using the names with which the man(7) man page refers -->
+ <!-- * to the various fields: -->
+ <!-- * -->
+ <!-- * title(section) manual title(section) <- page header -->
+ <!-- * source date title(section) <- page footer-->
+ <!-- * -->
+ <!-- * Note that while extra1, extra2, and extra3 are all (nominally) -->
+ <!-- * optional, in practice almost all pages include an "extra1" -->
+ <!-- * field, which is, universally, a date (in some form), and it is -->
+ <!-- * always rendered in the same place (the middle footer position) -->
+ <!-- * -->
+ <!-- * Here are a couple of examples of real-world man pages that -->
+ <!-- * have somewhat useful page headers/footers: -->
+ <!-- * -->
+ <!-- * gtk-options(7) GTK+ User's Manual gtk-options(7) -->
+ <!-- * GTK+ 1.2 2003-10-20 gtk-options(7) -->
+ <!-- * -->
+ <!-- * svgalib(7) Svgalib User Manual svgalib(7) -->
+ <!-- * Svgalib 1.4.1 16 December 1999 svgalib(7) -->
+ <!-- * -->
+ <xsl:param name="title"/>
+ <xsl:param name="section"/>
+ <xsl:param name="extra1"/>
+ <xsl:param name="extra2"/>
+ <xsl:param name="extra3"/>
+
+ <xsl:call-template name="mark.subheading"/>
+ <!-- * Note that we generate quotes around _every_ field in the -->
+ <!-- * .TH title line, including the "title" and "section" -->
+ <!-- * fields. That is because we use the contents of those "as -->
+ <!-- * is", unchanged from the DocBook source; and DTD-based -->
+ <!-- * validation does not provide a way to constrain them to be -->
+ <!-- * "space free" -->
+ <xsl:text>.TH "</xsl:text>
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="$man.th.title.max.length != ''">
+ <xsl:value-of
+ select="normalize-space(substring($title, 1, $man.th.title.max.length))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($title)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>" "</xsl:text>
+ <xsl:value-of select="normalize-space($section)"/>
+ <xsl:text>" "</xsl:text>
+ <xsl:if test="$man.th.extra1.suppress = 0">
+ <!-- * there is no max.length for the extra1 field; the reason -->
+ <!-- * is, it is almost always a date, and it is not possible -->
+ <!-- * to truncate dates without changing their meaning -->
+ <xsl:value-of select="normalize-space($extra1)"/>
+ </xsl:if>
+ <xsl:text>" "</xsl:text>
+ <xsl:if test="$man.th.extra2.suppress = 0">
+ <xsl:choose>
+ <!-- * if max.length is non-empty, use value to truncate field -->
+ <xsl:when test="$man.th.extra2.max.length != ''">
+ <xsl:value-of
+ select="normalize-space(substring($extra2, 1, $man.th.extra2.max.length))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($extra2)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:text>" "</xsl:text>
+ <xsl:if test="$man.th.extra3.suppress = 0">
+ <xsl:choose>
+ <!-- * if max.length is non-empty, use value to truncate field -->
+ <xsl:when test="$man.th.extra3.max.length != ''">
+ <xsl:value-of
+ select="normalize-space(substring($extra3, 1, $man.th.extra3.max.length))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($extra3)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:text>"&#10;</xsl:text>
+ <xsl:call-template name="mark.subheading"/>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <xsl:template name="set.default.formatting">
+ <!-- * Set default hyphenation, justification, indentation and -->
+ <!-- * line-breaking -->
+ <!-- * -->
+ <!-- * If the value of man.hypenate is zero (the default), then -->
+ <!-- * disable hyphenation (".nh" = "no hyphenation") -->
+ <xsl:if test="$man.hyphenate = 0">
+ <xsl:text>.\" disable hyphenation&#10;</xsl:text>
+ <xsl:text>.nh&#10;</xsl:text>
+ </xsl:if>
+ <!-- * If the value of man.justify is zero (the default), then -->
+ <!-- * disable justification (".ad l" means "adjust to left only") -->
+ <xsl:if test="$man.justify = 0">
+ <xsl:text>.\" disable justification</xsl:text>
+ <xsl:text> (adjust text to left margin only)&#10;</xsl:text>
+ <xsl:text>.ad l&#10;</xsl:text>
+ </xsl:if>
+ <xsl:if test="not($man.indent.refsect = 0)">
+ <xsl:text>.\" store initial "default indentation value"&#10;</xsl:text>
+ <xsl:text>.nr zq \n(IN&#10;</xsl:text>
+ <xsl:text>.\" adjust default indentation&#10;</xsl:text>
+ <xsl:text>.nr IN </xsl:text>
+ <xsl:value-of select="$man.indent.width"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.\" adjust indentation of SS headings&#10;</xsl:text>
+ <xsl:text>.nr SN \n(IN&#10;</xsl:text>
+ </xsl:if>
+ <!-- * Unless the value of man.break.after.slash is zero (the -->
+ <!-- * default), tell groff that it is OK to break a line -->
+ <!-- * after a slash when needed. -->
+ <xsl:if test="$man.break.after.slash != 0">
+ <xsl:text>.\" enable line breaks after slashes&#10;</xsl:text>
+ <xsl:text>.cflags 4 /&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The prepare.manpage.contents template is called after all -->
+ <!-- * other processing has been done, before serializing the -->
+ <!-- * result of all the other processing. It basically works on -->
+ <!-- * the result as one big string. -->
+ <xsl:template name="prepare.manpage.contents">
+ <xsl:param name="content" select="''"/>
+
+ <!-- * If user has provided a "local" string-substitution map to -->
+ <!-- * be applied /before/ the standard string-substitution map, -->
+ <!-- * apply it. -->
+ <xsl:variable name="pre.adjusted.content">
+ <xsl:choose>
+ <xsl:when test="$man.string.subst.map.local.pre">
+ <!-- * normalized value of man.string.subst.map.local.pre -->
+ <!-- * is non-empty, so get contents of map and apply them -->
+ <xsl:call-template name="apply-string-subst-map">
+ <xsl:with-param name="content" select="$content"/>
+ <xsl:with-param name="map.contents"
+ select="exsl:node-set($man.string.subst.map.local.pre)/*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * value of man.string.subst.map.local.pre is empty, -->
+ <!-- * so just copy original contents -->
+ <xsl:value-of select="$content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- * Apply standard string-substitution map. The main purpose -->
+ <!-- * of this map is to escape certain characters that have -->
+ <!-- * special meaning in roff, and to replace certain characters -->
+ <!-- * used within the stylesheet internally to represent roff -->
+ <!-- * markup characters. -->
+ <xsl:variable name="adjusted.content">
+ <xsl:call-template name="apply-string-subst-map">
+ <xsl:with-param name="content" select="$pre.adjusted.content"/>
+ <xsl:with-param name="map.contents"
+ select="exsl:node-set($man.string.subst.map)/*"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- * If user has provided a "local" string-substitution map to -->
+ <!-- * be applied /after/ the standard string-substitution map, -->
+ <!-- * apply it. -->
+ <xsl:variable name="post.adjusted.content">
+ <xsl:choose>
+ <xsl:when test="$man.string.subst.map.local.post">
+ <!-- * normalized value of man.string.subst.map.local.post -->
+ <!-- * is non-empty, so get contents of map and apply them -->
+ <xsl:call-template name="apply-string-subst-map">
+ <xsl:with-param name="content" select="$adjusted.content"/>
+ <xsl:with-param name="map.contents"
+ select="exsl:node-set($man.string.subst.map.local.post)/*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * value of man.string.subst.map.local.post is empty, -->
+ <!-- * so just copy original contents -->
+ <xsl:value-of select="$adjusted.content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- * Optionally, apply a character map to replace Unicode -->
+ <!-- * symbols and special characters. -->
+ <xsl:choose>
+ <xsl:when test="$man.charmap.enabled != 0">
+ <xsl:call-template name="apply-character-map">
+ <xsl:with-param name="content" select="$post.adjusted.content"/>
+ <xsl:with-param name="map.contents"
+ select="exsl:node-set($man.charmap.contents)/*"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * if we reach here, value of $man.charmap.enabled is zero, -->
+ <!-- * so we just pass the adjusted contents through "as is" -->
+ <xsl:value-of select="$adjusted.content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <xsl:template name="write.man.file">
+ <xsl:param name="name"/>
+ <xsl:param name="section"/>
+ <xsl:param name="lang"/>
+ <xsl:param name="content"/>
+ <xsl:param name="filename">
+ <xsl:call-template name="make.adjusted.man.filename">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$filename"/>
+ <xsl:with-param name="suppress-context-node-name" select="1"/>
+ <xsl:with-param name="quiet" select="$man.output.quietly"/>
+ <xsl:with-param
+ name="message-prolog"
+ >Note: </xsl:with-param>
+ <xsl:with-param name="encoding" select="$man.output.encoding"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <!-- * A "stub" is sort of alias for another file, intended to be read -->
+ <!-- * and expanded by soelim(1); it's simply a file whose complete -->
+ <!-- * contents are just a single line of the following form: -->
+ <!-- * -->
+ <!-- * .so manX/realname.X -->
+ <!-- * -->
+ <!-- * "realname" is a name of another man-page file. That .so line is -->
+ <!-- * basically a roff "include" statement. When the man command finds -->
+ <!-- * it, it calls soelim(1) and includes and displays the contents of -->
+ <!-- * the manX/realqname.X file. -->
+ <!-- * -->
+ <!-- * If a refentry has multiple refnames, we generate a "stub" page for -->
+ <!-- * each refname found, except for the first one. -->
+ <xsl:template name="write.stubs">
+ <xsl:param name="first.refname"/>
+ <xsl:param name="section"/>
+ <xsl:param name="lang"/>
+ <xsl:for-each select="refnamediv/refname">
+ <xsl:if test=". != $first.refname">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="make.adjusted.man.filename">
+ <xsl:with-param name="name">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="$man.output.quietly"/>
+ <xsl:with-param name="suppress-context-node-name" select="1"/>
+ <xsl:with-param name="message-prolog">Note: </xsl:with-param>
+ <xsl:with-param name="message-epilog"> (soelim stub)</xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:value-of select="concat('.so man', $section, '/')"/>
+ <xsl:call-template name="make.adjusted.man.filename">
+ <xsl:with-param name="name" select="$first.refname"/>
+ <xsl:with-param name="section" select="$section"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <!-- * A manifest file is useful for doing "make clean" during -->
+ <!-- * builds and for other purposes. When we make the manifest -->
+ <!-- * file, we need to include in it a filename for each man-page -->
+ <!-- * generated, including any "stub" pages. -->
+ <xsl:template name="generate.manifest">
+ <xsl:variable name="filelist">
+ <xsl:for-each select="//refentry">
+ <!-- * all refname instances in a Refentry inherit their section -->
+ <!-- * numbers from the parent Refentry; so we only need to get -->
+ <!-- * the section once per Refentry, not once per Refname -->
+ <xsl:variable name="section">
+ <xsl:call-template name="get.refentry.section">
+ <xsl:with-param name="quiet" select="1"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:variable>
+ <xsl:for-each select="refnamediv/refname">
+ <xsl:call-template name="make.adjusted.man.filename">
+ <xsl:with-param name="name" select="."/>
+ <xsl:with-param name="section" select="$section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- * we write the manifest file once per document, not once per -->
+ <!-- * Refentry -->
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:value-of select="$man.output.manifest.filename"/>
+ </xsl:with-param>
+ <xsl:with-param name="quiet" select="1"/>
+ <xsl:with-param name="message-prolog">Note: </xsl:with-param>
+ <xsl:with-param name="message-epilog"> (manifest file)</xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:value-of select="$filelist"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="$man.output.quietly = 0">
+ <xsl:message><xsl:text>&#10;</xsl:text></xsl:message>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/param.xsl b/docs/xsl-generic/manpages/param.xsl
new file mode 100644
index 00000000..fcdc3bc6
--- /dev/null
+++ b/docs/xsl-generic/manpages/param.xsl
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- This file is generated from param.xweb -->
+
+<!-- ********************************************************************
+ $Id: param.xweb 7112 2007-07-22 12:19:19Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:param name="man.authors.section.enabled">1</xsl:param>
+<xsl:param name="man.break.after.slash">0</xsl:param>
+<xsl:param name="man.charmap.enabled" select="1"/>
+<xsl:param name="man.charmap.subset.profile">
+@*[local-name() = 'block'] = 'Miscellaneous Technical' or
+(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and
+ @*[local-name() = 'class'] = 'symbols'
+) or
+(@*[local-name() = 'block'] = 'General Punctuation' and
+ (@*[local-name() = 'class'] = 'spaces' or
+ @*[local-name() = 'class'] = 'dashes' or
+ @*[local-name() = 'class'] = 'quotes' or
+ @*[local-name() = 'class'] = 'bullets'
+ )
+) or
+@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or
+@*[local-name() = 'name'] = 'WORD JOINER' or
+@*[local-name() = 'name'] = 'SERVICE MARK' or
+@*[local-name() = 'name'] = 'TRADE MARK SIGN' or
+@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE'
+</xsl:param>
+<xsl:param name="man.charmap.uri"/>
+<xsl:param name="man.charmap.use.subset" select="1"/>
+<xsl:param name="man.copyright.section.enabled">1</xsl:param>
+<xsl:param name="man.endnotes.are.numbered">1</xsl:param>
+<xsl:param name="man.endnotes.list.enabled">1</xsl:param>
+<xsl:param name="man.endnotes.list.heading"/>
+ <xsl:param name="man.font.funcprototype">BI</xsl:param>
+ <xsl:param name="man.font.funcsynopsisinfo">B</xsl:param>
+ <xsl:param name="man.font.table.headings">B</xsl:param>
+ <xsl:param name="man.font.table.title">B</xsl:param>
+<xsl:param name="man.hyphenate.computer.inlines">0</xsl:param>
+<xsl:param name="man.hyphenate.filenames">0</xsl:param>
+<xsl:param name="man.hyphenate">0</xsl:param>
+<xsl:param name="man.hyphenate.urls">0</xsl:param>
+<xsl:param name="man.indent.blurbs" select="1"/>
+<xsl:param name="man.indent.lists" select="1"/>
+<xsl:param name="man.indent.refsect" select="0"/>
+<xsl:param name="man.indent.verbatims" select="1"/>
+<xsl:param name="man.indent.width">4</xsl:param>
+<xsl:param name="man.justify">0</xsl:param>
+<xsl:param name="man.links.are.underlined">1</xsl:param>
+<xsl:param name="man.output.base.dir">man/</xsl:param>
+<xsl:param name="man.output.encoding">UTF-8</xsl:param>
+<xsl:param name="man.output.in.separate.dir" select="0"/>
+<xsl:param name="man.output.lang.in.name.enabled" select="0"/>
+<xsl:param name="man.output.manifest.enabled" select="0"/>
+<xsl:param name="man.output.manifest.filename">MAN.MANIFEST</xsl:param>
+<xsl:param name="man.output.quietly" select="0"/>
+<xsl:param name="man.output.subdirs.enabled" select="1"/>
+<xsl:param name="man.segtitle.suppress" select="0"/>
+<xsl:param name="man.string.subst.map">
+
+ <!-- * remove no-break marker at beginning of line (stylesheet artifact) -->
+ <substitution oldstring="&#9618;&#9600;" newstring="&#9618;"/>
+ <!-- * replace U+2580 no-break marker (stylesheet-added) w/ no-break space -->
+ <substitution oldstring="&#9600;" newstring="\ "/>
+
+ <!-- ==================================================================== -->
+
+ <!-- * squeeze multiple newlines before a roff request -->
+ <substitution oldstring="&#10;&#10;." newstring="&#10;."/>
+ <!-- * remove any .sp instances that directly precede a .PP -->
+ <substitution oldstring=".sp&#10;.PP" newstring=".PP"/>
+ <!-- * remove any .sp instances that directly follow a .PP -->
+ <substitution oldstring=".PP&#10;.sp" newstring=".PP"/>
+ <!-- * squeeze multiple newlines after start of no-fill (verbatim) env. -->
+ <substitution oldstring=".nf&#10;&#10;" newstring=".nf&#10;"/>
+ <!-- * squeeze multiple newlines after REstoring margin -->
+ <substitution oldstring=".RE&#10;&#10;" newstring=".RE&#10;"/>
+ <!-- * U+2591 is a marker we add before and after every Parameter in -->
+ <!-- * Funcprototype output -->
+ <substitution oldstring="&#9617;" newstring=" "/>
+ <!-- * U+2592 is a marker we add for the newline before output of <sbr>; -->
+ <substitution oldstring="&#9618;" newstring="&#10;"/>
+ <!-- * -->
+ <!-- * Now deal with some other characters that are added by the -->
+ <!-- * stylesheets during processing. -->
+ <!-- * -->
+ <!-- * bullet -->
+ <substitution oldstring="&#8226;" newstring="\(bu"/>
+ <!-- * left double quote -->
+ <substitution oldstring="&#8220;" newstring="\(lq"/>
+ <!-- * right double quote -->
+ <substitution oldstring="&#8221;" newstring="\(rq"/>
+ <!-- * left single quote -->
+ <substitution oldstring="&#8216;" newstring="\(oq"/>
+ <!-- * right single quote -->
+ <substitution oldstring="&#8217;" newstring="\(cq"/>
+ <!-- * copyright sign -->
+ <substitution oldstring="&#169;" newstring="\(co"/>
+ <!-- * registered sign -->
+ <substitution oldstring="&#174;" newstring="\(rg"/>
+ <!-- * ...servicemark... -->
+ <!-- * There is no groff equivalent for it. -->
+ <substitution oldstring="&#8480;" newstring="(SM)"/>
+ <!-- * ...trademark... -->
+ <!-- * We don't do "\(tm" because for console output, -->
+ <!-- * groff just renders that as "tm"; that is: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Producttm -->
+ <!-- * -->
+ <!-- * So we just make it to "(TM)" instead; thus: -->
+ <!-- * -->
+ <!-- * Product&#x2122; -> Product(TM) -->
+ <substitution oldstring="&#8482;" newstring="(TM)"/>
+
+</xsl:param>
+<xsl:param name="man.string.subst.map.local.post"/>
+ <xsl:param name="man.string.subst.map.local.pre"/>
+<xsl:param name="man.subheading.divider.enabled">0</xsl:param>
+<xsl:param name="man.subheading.divider">========================================================================</xsl:param>
+<xsl:param name="man.table.footnotes.divider">----</xsl:param>
+<xsl:param name="man.th.extra1.suppress">0</xsl:param>
+<xsl:param name="man.th.extra2.max.length">30</xsl:param>
+<xsl:param name="man.th.extra2.suppress">0</xsl:param>
+<xsl:param name="man.th.extra3.max.length">30</xsl:param>
+<xsl:param name="man.th.extra3.suppress">0</xsl:param>
+<xsl:param name="man.th.title.max.length">20</xsl:param>
+<xsl:param name="refentry.date.profile.enabled">0</xsl:param>
+<xsl:param name="refentry.date.profile">
+ (($info[//date])[last()]/date)[1]|
+ (($info[//pubdate])[last()]/pubdate)[1]
+</xsl:param>
+<xsl:param name="refentry.manual.fallback.profile">
+refmeta/refmiscinfo[1]/node()</xsl:param>
+<xsl:param name="refentry.manual.profile.enabled">0</xsl:param>
+<xsl:param name="refentry.manual.profile">
+ (($info[//title])[last()]/title)[1]|
+ ../title/node()
+</xsl:param>
+<xsl:param name="refentry.meta.get.quietly" select="0"/>
+<xsl:param name="refentry.source.fallback.profile">
+refmeta/refmiscinfo[1]/node()</xsl:param>
+<xsl:param name="refentry.source.name.profile.enabled">0</xsl:param>
+<xsl:param name="refentry.source.name.profile">
+ (($info[//productname])[last()]/productname)[1]|
+ (($info[//corpname])[last()]/corpname)[1]|
+ (($info[//corpcredit])[last()]/corpcredit)[1]|
+ (($info[//corpauthor])[last()]/corpauthor)[1]|
+ (($info[//orgname])[last()]/orgname)[1]|
+ (($info[//publishername])[last()]/publishername)[1]
+</xsl:param>
+<xsl:param name="refentry.source.name.suppress">0</xsl:param>
+<xsl:param name="refentry.version.profile.enabled">0</xsl:param>
+<xsl:param name="refentry.version.profile">
+ (($info[//productnumber])[last()]/productnumber)[1]|
+ (($info[//edition])[last()]/edition)[1]|
+ (($info[//releaseinfo])[last()]/releaseinfo)[1]
+</xsl:param>
+<xsl:param name="refentry.version.suppress">0</xsl:param>
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/profile-docbook.xsl b/docs/xsl-generic/manpages/profile-docbook.xsl
new file mode 100644
index 00000000..ec4759e0
--- /dev/null
+++ b/docs/xsl-generic/manpages/profile-docbook.xsl
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="exsl exslt" version="1.0">
+
+ <xsl:import href="../html/docbook.xsl"/>
+ <xsl:import href="../html/manifest.xsl"/>
+ <!-- * html-synop.xsl file is generated by build -->
+ <xsl:import href="html-synop.xsl"/>
+ <xsl:output method="text" encoding="UTF-8" indent="no"/>
+ <!-- ********************************************************************
+ $Id: docbook.xsl 7153 2007-07-26 14:08:55Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+ <!-- ==================================================================== -->
+
+ <xsl:include href="../common/refentry.xsl"/>
+ <xsl:include href="../common/charmap.xsl"/>
+ <xsl:include href="param.xsl"/>
+ <xsl:include href="utility.xsl"/>
+ <xsl:include href="info.xsl"/>
+ <xsl:include href="other.xsl"/>
+ <xsl:include href="refentry.xsl"/>
+ <xsl:include href="block.xsl"/>
+ <xsl:include href="inline.xsl"/>
+ <xsl:include href="synop.xsl"/>
+ <xsl:include href="lists.xsl"/>
+ <xsl:include href="endnotes.xsl"/>
+ <xsl:include href="table.xsl"/>
+
+ <!-- * we rename the following just to avoid using params with "man" -->
+ <!-- * prefixes in the table.xsl stylesheet (because that stylesheet -->
+ <!-- * can potentially be reused for more than just man output) -->
+ <xsl:param name="tbl.font.headings" select="$man.font.table.headings"/>
+ <xsl:param name="tbl.font.title" select="$man.font.table.title"/>
+
+ <!-- ==================================================================== -->
+
+ <xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- * when we find a namespaced document, strip the -->
+ <!-- * namespace and then continue processing it. -->
+ <xsl:when test="false()"/>
+ <xsl:when test="//*[local-name() = 'refentry']">
+ <!-- * Check to see if we have any refentry children in this -->
+ <!-- * document; if so, process them. The reason we use -->
+ <!-- * local-name()=refentry (instead of just //refentry) to to -->
+ <!-- * check for refentry children is because this stylsheet is -->
+ <!-- * also post-processed by the stylesheet build to create the -->
+ <!-- * manpages/profile-docbook.xsl, and the refentry child check -->
+ <!-- * in the profile-docbook.xsl stylesheet won't work if we do -->
+ <!-- * a simple //refentry check. -->
+ <xsl:apply-templates select="$profiled-nodes//refentry"/>
+ <!-- * if $man.output.manifest.enabled is non-zero, -->
+ <!-- * generate a manifest file -->
+ <xsl:if test="not($man.output.manifest.enabled = 0)">
+ <xsl:call-template name="generate.manifest">
+ <xsl:with-param name="filename">
+ <xsl:choose>
+ <xsl:when test="not($man.output.manifest.filename = '')">
+ <!-- * If a name for the manifest file is specified, -->
+ <!-- * use that name. -->
+ <xsl:value-of select="$man.output.manifest.filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, if user has unset -->
+ <!-- * $man.output.manifest.filename, default to -->
+ <!-- * using "MAN.MANIFEST" as the filename. Because -->
+ <!-- * $man.output.manifest.enabled is non-zero and -->
+ <!-- * so we must have a filename in order to -->
+ <!-- * generate the manifest. -->
+ <xsl:text>MAN.MANIFEST</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, the document does not contain any -->
+ <!-- * refentry elements, so log/emit message and stop. -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Erro</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text> no refentry</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>No refentry elements found</xsl:text>
+ <xsl:if test="$doc.title != ''">
+ <xsl:text> in "</xsl:text>
+ <xsl:choose>
+ <xsl:when test="string-length($doc.title) &gt; 30">
+ <xsl:value-of select="substring($doc.title,1,30)"/>
+ <xsl:text>...</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$doc.title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"</xsl:text>
+ </xsl:if>
+ <xsl:text>.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ============================================================== -->
+
+ <xsl:template match="refentry">
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <!-- * Just use the first refname found as the "name" of the man -->
+ <!-- * page (which may different from the "title"...) -->
+ <xsl:variable name="first.refname" select="refnamediv[1]/refname[1]"/>
+
+ <xsl:call-template name="root.messages">
+ <xsl:with-param name="refname" select="$first.refname"/>
+ </xsl:call-template>
+
+ <!-- * Because there are several times when we need to check *info of -->
+ <!-- * each refentry and its ancestors, we get those and store the -->
+ <!-- * data from them as a node-set in memory. -->
+
+ <!-- * Make a node-set with contents of *info -->
+ <xsl:variable name="get.info" select="ancestor-or-self::*/*[substring(local-name(), string-length(local-name()) - 3) = 'info']"/>
+ <xsl:variable name="info" select="exsl:node-set($get.info)"/>
+
+ <!-- * The get.refentry.metadata template is in -->
+ <!-- * ../common/refentry.xsl. It looks for metadata in $info -->
+ <!-- * and in various other places and then puts it into a form -->
+ <!-- * that's easier for us to digest. -->
+ <xsl:variable name="get.refentry.metadata">
+ <xsl:call-template name="get.refentry.metadata">
+ <xsl:with-param name="refname" select="$first.refname"/>
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="prefs" select="$refentry.metadata.prefs"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="refentry.metadata" select="exsl:node-set($get.refentry.metadata)"/>
+
+ <!-- * Assemble the various parts into a complete page, then store into -->
+ <!-- * $manpage.contents so that we can manipluate them further. -->
+ <xsl:variable name="manpage.contents">
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * top.comment = commented-out section at top of roff source -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="top.comment">
+ <xsl:with-param name="info" select="$info"/>
+ <xsl:with-param name="date" select="$refentry.metadata/date"/>
+ <xsl:with-param name="title" select="$refentry.metadata/title"/>
+ <xsl:with-param name="manual" select="$refentry.metadata/manual"/>
+ <xsl:with-param name="source" select="$refentry.metadata/source"/>
+ </xsl:call-template>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * TH.title.line = title line in header/footer of man page -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="TH.title.line">
+ <!-- * .TH TITLE section extra1 extra2 extra3 -->
+ <!-- * -->
+ <!-- * According to the man(7) man page: -->
+ <!-- * -->
+ <!-- * extra1 = date, "the date of the last revision" -->
+ <!-- * extra2 = source, "the source of the command" -->
+ <!-- * extra3 = manual, "the title of the manual -->
+ <!-- * (e.g., Linux Programmer's Manual)" -->
+ <!-- * -->
+ <!-- * So, we end up with: -->
+ <!-- * -->
+ <!-- * .TH TITLE section date source manual -->
+ <!-- * -->
+ <xsl:with-param name="title" select="$refentry.metadata/title"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="extra1" select="$refentry.metadata/date"/>
+ <xsl:with-param name="extra2" select="$refentry.metadata/source"/>
+ <xsl:with-param name="extra3" select="$refentry.metadata/manual"/>
+ </xsl:call-template>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * Set default hyphenation, justification, indentation, and -->
+ <!-- * line-breaking -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:call-template name="set.default.formatting"/>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * Main body of man page -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:apply-templates/>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * AUTHOR section -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="not($man.authors.section.enabled = 0)">
+ <xsl:call-template name="author.section">
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * COPYRIGHT section -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="not($man.copyright.section.enabled = 0)">
+ <xsl:call-template name="copyright.section">
+ <xsl:with-param name="info" select="$info"/>
+ </xsl:call-template>
+ </xsl:if>
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- * NOTES list (only if user wants endnotes numbered and/or listed) -->
+ <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <xsl:if test="$man.endnotes.list.enabled != 0 or $man.endnotes.are.numbered != 0">
+ <xsl:call-template name="endnotes.list"/>
+ </xsl:if>
+ </xsl:variable> <!-- * end of manpage.contents -->
+
+ <!-- * Prepare the page contents for final output, then store in -->
+ <!-- * $manpage.contents.prepared so the we can pass it on to the -->
+ <!-- * write.text.chunk() function -->
+ <xsl:variable name="manpage.contents.prepared">
+ <!-- * "Preparing" the page contents involves, at a minimum, -->
+ <!-- * doubling any backslashes found (so they aren't interpreted -->
+ <!-- * as roff escapes). -->
+ <!-- * -->
+ <!-- * If $charmap.enabled is true, "preparing" the page contents also -->
+ <!-- * involves applying a character map to convert Unicode symbols and -->
+ <!-- * special characters into corresponding roff escape sequences. -->
+ <xsl:call-template name="prepare.manpage.contents">
+ <xsl:with-param name="content" select="$manpage.contents"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- * Write the prepared page contents to disk to create -->
+ <!-- * the final man page. -->
+ <xsl:call-template name="write.man.file">
+ <xsl:with-param name="name" select="$first.refname"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="content" select="$manpage.contents.prepared"/>
+ </xsl:call-template>
+
+ <!-- * Generate "stub" (alias) pages (if any needed) -->
+ <xsl:call-template name="write.stubs">
+ <xsl:with-param name="first.refname" select="$first.refname"/>
+ <xsl:with-param name="section" select="$refentry.metadata/section"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ </xsl:call-template>
+
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/refentry.xsl b/docs/xsl-generic/manpages/refentry.xsl
new file mode 100644
index 00000000..9cb7005f
--- /dev/null
+++ b/docs/xsl-generic/manpages/refentry.xsl
@@ -0,0 +1,256 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: refentry.xsl 6657 2007-02-26 20:04:25Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+ <xsl:template match="refnamediv">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- * No title on secondary refnamedivs! -->
+ <!-- * Just put a single line break instead -->
+ <xsl:text>.br&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:text>.SH "</xsl:text>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ <xsl:text>"</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="mark.subheading"/>
+ <!-- * if we have multiple Refname instances, separate the names -->
+ <!-- * with commas -->
+ <xsl:for-each select="refname">
+ <xsl:if test="position()>1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="."/>
+ </xsl:for-each>
+ <!-- * The man(7) man pages says: -->
+ <!-- * -->
+ <!-- * The only required heading is NAME, which should be the -->
+ <!-- * first section and be followed on the next line by a one -->
+ <!-- * line description of the program: -->
+ <!-- * -->
+ <!-- * .SH NAME chess \- the game of chess -->
+ <!-- * -->
+ <!-- * It is extremely important that this format is followed, -->
+ <!-- * and that there is a backslash before the single dash -->
+ <!-- * which follows the command name. This syntax is used by -->
+ <!-- * the makewhatis(8) program to create a database of short -->
+ <!-- * command descriptions for the whatis(1) and apropos(1) -->
+ <!-- * commands. -->
+ <!-- * -->
+ <!-- * So why don't we precede the hyphen with a backslash here? -->
+ <!-- * Well, because it's added later, by the apply-string-subst-map -->
+ <!-- * template, before we generate final output -->
+ <xsl:if test="refpurpose/node()">
+ <xsl:text> - </xsl:text>
+ <xsl:value-of select="normalize-space(refpurpose)"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="refsynopsisdiv">
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:text>.SH "</xsl:text>
+ <xsl:apply-templates select="." mode="title.markup"/>
+ <xsl:text>"&#10;</xsl:text>
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="refsect1|refentry/refsection">
+ <xsl:variable name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:variable>
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:text>.SH "</xsl:text>
+ <xsl:value-of select="normalize-space($title)"/>
+ <xsl:text>"&#10;</xsl:text>
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="refsect2|refentry/refsection/refsection">
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:variable name="title">
+ <xsl:apply-templates
+ select="(info/title
+ |refsectioninfo/title
+ |refsect1info/title
+ |title)[1]/node()"/>
+
+ </xsl:variable>
+ <xsl:text>.SS "</xsl:text>
+ <xsl:value-of select="normalize-space($title)"/>
+ <xsl:text>"&#10;</xsl:text>
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:choose>
+ <!-- * If default-indentation adjustment is on, then indent the -->
+ <!-- * child content of this Refsect2 -->
+ <xsl:when test="not($man.indent.refsect = 0)">
+ <xsl:text>.RS&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * If default-indentation adjustment is on, then do not -->
+ <!-- * indent the child content of thie Refsect2, because -->
+ <!-- * the title is already "sticking out to the left" -->
+ <!-- * (as the groff_man(7) man page describes it), which -->
+ <!-- * actually means the title is indented by the value of -->
+ <!-- * the SN register, which appears by default to be -->
+ <!-- * about half of the default indentation value -->
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="refsect3|refentry/refsection/refsection/refsection">
+ <xsl:variable name="title">
+ <xsl:value-of select="(info/title
+ |refsectioninfo/title
+ |refsect1info/title
+ |title)[1]"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- * If default-indentation adjustment is on, then indent the -->
+ <!-- * child content of this Refsect3 or Refsection. -->
+ <xsl:when test="not($man.indent.refsect != 0)">
+ <xsl:call-template name="nested-section-title"/>
+ <xsl:text>.RS&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * If default-indentation adjustment is on, then do not -->
+ <!-- * indent the child content of thie Refsect2, because -->
+ <!-- * the title is already "sticking out to the left" -->
+ <!-- * (as the groff_man(7) man page describes it), which -->
+ <!-- * actually means the title is indented by the value of -->
+ <!-- * the SN register, which appears by default to be -->
+ <!-- * about half of the default indentation value -->
+ <xsl:text>.ti (\n(SNu * 5u / 3u)&#10;</xsl:text>
+ <xsl:call-template name="nested-section-title"/>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="refsection">
+ <!-- * This template is used for a nested Refsection that is -->
+ <!-- * is a child of a Refsect3-level section (The numberd -->
+ <!-- * Refsect hierarchy in DocBook ends with Refsect3, so -->
+ <!-- * there is not actually a Refsect4 element.) -->
+ <xsl:variable name="title">
+ <xsl:value-of select="(info/title
+ |refsectioninfo/title
+ |refsect1info/title
+ |title)[1]"/>
+ </xsl:variable>
+ <xsl:variable name="indent-width">
+ <xsl:if test="not($man.indent.refsect = 0)">
+ <!-- * If default-indentation adjustment is on, then indent the -->
+ <!-- * child content of this Refsect3 or Refsection. -->
+ <xsl:text>(\n(SNu)&#10;</xsl:text>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:call-template name="nested-section-title"/>
+ <xsl:text>.RS (\n(SNu)&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.RE&#10;</xsl:text>
+ </xsl:template>
+
+ <!-- ==================================================================== -->
+
+ <!-- * Use uppercase to render titles of all instances of Refsect1 or -->
+ <!-- * top-level Refsection, including in cross-references -->
+ <xsl:template match="refsect1|refentry/refsection"
+ mode="title.markup">
+ <xsl:variable name="title" select="(info/title
+ |refsectioninfo/title
+ |refsect1info/title
+ |title)[1]"/>
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string">
+ <xsl:apply-templates select="$title" mode="title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- * Output of Titles from Xref with Endterm needs to be handled -->
+ <!-- * separately from output for Endterm-less Xref -->
+ <xsl:template match="refsect1/title
+ |refentry/refsection/title
+ |refsynopsisdiv/title"
+ mode="endterm">
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string">
+ <xsl:apply-templates/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- * Use uppercase to render titles of all instances of Refsynopsisdiv, -->
+ <!-- * including in cross-references -->
+ <xsl:template match="refsynopsisdiv" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="info/title
+ |refsynopsisdivinfo/title
+ |title">
+ <xsl:apply-templates
+ select="(info/title
+ |refsynopsisdivinfo/title
+ |title)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- * Use uppercase to render titles of all instances of Refnamediv, -->
+ <!-- * including in cross-references -->
+ <xsl:template match="refnamediv" mode="title.markup">
+ <xsl:call-template name="string.upper">
+ <xsl:with-param name="string">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="refnamediv" mode="xref-to">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:template>
+
+ <!-- ==================================================================== -->
+
+ <!-- * suppress any title we don't otherwise process elsewhere -->
+
+ <xsl:template match="title"/>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/synop.xsl b/docs/xsl-generic/manpages/synop.xsl
new file mode 100644
index 00000000..cbca36c7
--- /dev/null
+++ b/docs/xsl-generic/manpages/synop.xsl
@@ -0,0 +1,305 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: synop.xsl 7235 2007-08-13 11:13:37Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<xsl:variable name="arg.or.sep"> |</xsl:variable>
+
+<!-- * Note: If you're looking for the *Synopsis* element, you won't -->
+<!-- * find any code here for handling it. It's a "verbatim" -->
+<!-- * environment; see the block.xsl file instead. -->
+
+<xsl:template match="synopfragmentref">
+ <xsl:variable name="target" select="key('id',@linkend)"/>
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="$target" mode="synopfragment.number"/>
+ </xsl:variable>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text>&#x2580;</xsl:text>
+ <xsl:call-template name="italic">
+ <xsl:with-param name="node" select="exsl:node-set(normalize-space(.))"/>
+ <xsl:with-param name="context" select="."/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="synopfragment" mode="synopfragment.number">
+ <xsl:number format="1"/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:variable name="snum">
+ <xsl:apply-templates select="." mode="synopfragment.number"/>
+ </xsl:variable>
+ <xsl:text>&#10;</xsl:text>
+ <!-- * If we have a group of Synopgfragments, we only want to output a -->
+ <!-- * line of space before the first; so when we find a Synopfragment -->
+ <!-- * whose first preceding sibling is another Synopfragment, we back -->
+ <!-- * up one line vertically to negate the line of vertical space -->
+ <!-- * that's added by the .HP macro -->
+ <xsl:if test="preceding-sibling::*[1][self::synopfragment]">
+ <xsl:text>.sp -1n&#10;</xsl:text>
+ </xsl:if>
+ <xsl:text>.HP </xsl:text>
+ <!-- * For each Synopfragment, make a hanging paragraph, with the -->
+ <!-- * indent calculated from the length of the generated number -->
+ <!-- * used as a reference + pluse 3 characters (for the open and -->
+ <!-- * close parens around the number, plus a space). -->
+ <xsl:value-of select="string-length (normalize-space ($snum)) + 3"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$snum"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="group|arg" name="group-or-arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*/@sepchar">
+ <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="position()>1 and
+ not(preceding-sibling::*[1][self::sbr])"
+ ><xsl:value-of select="$sepchar"/></xsl:if>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <!-- * do nothing -->
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.open.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.open.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.open.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:variable name="arg">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'arg' and not(ancestor::arg)">
+ <!-- * Prevent arg contents from getting wrapped and broken up -->
+ <xsl:variable name="arg.wrapper">
+ <Arg><xsl:value-of select="normalize-space($arg)"/></Arg>
+ </xsl:variable>
+ <xsl:apply-templates mode="prevent.line.breaking"
+ select="exsl:node-set($arg.wrapper)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$rep='repeat'">
+ <xsl:value-of select="$arg.rep.repeat.str"/>
+ </xsl:when>
+ <xsl:when test="$rep='norepeat'">
+ <xsl:value-of select="$arg.rep.norepeat.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.rep.def.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$choice='plain'">
+ <xsl:if test='arg'>
+ <xsl:value-of select="$arg.choice.plain.close.str"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="$choice='req'">
+ <xsl:value-of select="$arg.choice.req.close.str"/>
+ </xsl:when>
+ <xsl:when test="$choice='opt'">
+ <xsl:value-of select="$arg.choice.opt.close.str"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$arg.choice.def.close.str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="group/arg">
+ <xsl:variable name="choice" select="@choice"/>
+ <xsl:variable name="rep" select="@rep"/>
+ <xsl:if test="position()>1"><xsl:value-of select="$arg.or.sep"/></xsl:if>
+ <xsl:call-template name="group-or-arg"/>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <xsl:text>&#x2592;</xsl:text>
+ <xsl:text>.br&#x2592;</xsl:text>
+</xsl:template>
+
+<xsl:template match="cmdsynopsis">
+ <!-- * if justification is enabled by default, turn it off temporarily -->
+ <xsl:if test="$man.justify != 0">
+ <xsl:text>.ad l&#10;</xsl:text>
+ </xsl:if>
+ <!-- * if hyphenation is enabled by default, turn it off temporarily -->
+ <xsl:if test="$man.hyphenate != 0">
+ <xsl:text>.hy 0&#10;</xsl:text>
+ </xsl:if>
+ <xsl:text>.HP </xsl:text>
+ <xsl:value-of select="string-length (normalize-space (command)) + 1"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <!-- * if justification is enabled by default, turn it back on -->
+ <xsl:if test="$man.justify != 0">
+ <xsl:text>.ad&#10;</xsl:text>
+ </xsl:if>
+ <!-- * if hyphenation is enabled by default, turn it back on -->
+ <xsl:if test="$man.hyphenate != 0">
+ <xsl:text>.hy&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<!-- * Funcsynopis hierarchy starts here -->
+<!-- ==================================================================== -->
+
+<!-- * Note: If you're looking for the *Funcsynopsisinfo* element, -->
+<!-- * you won't find any code here for handling it. It's a "verbatim" -->
+<!-- * environment; see the block.xsl file instead. -->
+
+<!-- * Within funcsynopis output, disable hyphenation, and use -->
+<!-- * left-aligned filling for the duration of the synopsis, so that -->
+<!-- * line breaks only occur between separate paramdefs. -->
+<xsl:template match="funcsynopsis">
+ <!-- * if justification is enabled by default, turn it off temporarily -->
+ <xsl:if test="$man.justify != 0">
+ <xsl:text>.ad l&#10;</xsl:text>
+ </xsl:if>
+ <!-- * if hyphenation is enabled by default, turn it off temporarily -->
+ <xsl:if test="$man.hyphenate != 0">
+ <xsl:text>.hy 0&#10;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <!-- * if justification is enabled by default, turn it back on -->
+ <xsl:if test="$man.justify != 0">
+ <xsl:text>.ad&#10;</xsl:text>
+ </xsl:if>
+ <!-- * if hyphenation is enabled by default, turn it back on -->
+ <xsl:if test="$man.hyphenate != 0">
+ <xsl:text>.hy&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<!-- * All Funcprototype content is by default rendered in bold, -->
+<!-- * because the man(7) man page says this: -->
+<!-- * -->
+<!-- * For functions, the arguments are always specified using -->
+<!-- * italics, even in the SYNOPSIS section, where the rest of -->
+<!-- * the function is specified in bold -->
+<!-- * -->
+<!-- * Look through the contents of the man/man2 and man3 directories -->
+<!-- * on your system, and you'll see that most existing pages do follow -->
+<!-- * this "bold everything in function synopsis" rule. -->
+<!-- * -->
+<!-- * Users who don't want the bold output can choose to adjust the -->
+<!-- * man.font.funcprototype parameter on their own. So even if you -->
+<!-- * don't personally like the way it looks, please don't change the -->
+<!-- * default to be non-bold - because it's a convention that's -->
+<!-- * followed is the vast majority of existing man pages that document -->
+<!-- * functions, and we need to follow it by default, like it or no. -->
+<xsl:template match="funcprototype">
+ <xsl:variable name="funcprototype.string.value">
+ <xsl:value-of select="funcdef"/>
+ </xsl:variable>
+ <xsl:variable name="funcprototype">
+ <xsl:apply-templates select="funcdef"/>
+ </xsl:variable>
+ <xsl:text>.HP </xsl:text>
+ <!-- * Hang Paragraph by length of string value of <funcdef> + 1 -->
+ <!-- * (because funcdef is always followed by one open paren char) -->
+ <xsl:value-of select="string-length (normalize-space ($funcprototype.string.value)) + 1"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="$man.font.funcprototype"/>
+ <xsl:text> </xsl:text>
+ <!-- * The following quotation mark (and the one further below) are -->
+ <!-- * needed to properly delimit the parts of the Funcprototype that -->
+ <!-- * should be rendered in the prevailing font (either Bold or Roman) -->
+ <!-- * from Parameter output that needs to be alternately rendered in -->
+ <!-- * italic. -->
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="normalize-space($funcprototype)"/>
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="*[local-name() != 'funcdef']"/>
+ <xsl:text>"</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="funcdef">
+ <xsl:apply-templates mode="prevent.line.breaking"/>
+</xsl:template>
+
+<xsl:template match="funcdef/function">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="void">
+ <xsl:text>void);</xsl:text>
+</xsl:template>
+
+<xsl:template match="varargs">
+ <xsl:text>...);</xsl:text>
+</xsl:template>
+
+<xsl:template match="paramdef">
+ <xsl:apply-templates mode="prevent.line.breaking" select="."/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>);</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="paramdef/parameter">
+ <!-- * We use U+2591 here in place of a normal space, because if we -->
+ <!-- * were to just use a normal space, it would get replaced with a -->
+ <!-- * non-breaking space when we run the whole Paramdef through the -->
+ <!-- * prevent.line.breaking template. And as far as why we're -->
+ <!-- * inserting the space and quotation marks around each Parameter -->
+ <!-- * to begin with, the reason is that we need to because we are -->
+ <!-- * outputting Funcsynopsis in either the "BI" or "RI" font, and -->
+ <!-- * the space and quotation marks delimit the text as the -->
+ <!-- * "alternate" or "I" text that needs to be rendered in italic. -->
+ <xsl:text>"&#x2591;"</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>"&#x2591;"</xsl:text>
+</xsl:template>
+
+<xsl:template match="funcparams">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/table.xsl b/docs/xsl-generic/manpages/table.xsl
new file mode 100644
index 00000000..b6e2fe2e
--- /dev/null
+++ b/docs/xsl-generic/manpages/table.xsl
@@ -0,0 +1,633 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="exsl"
+ version='1.0'>
+
+ <!-- ********************************************************************
+ $Id: table.xsl 7177 2007-08-06 10:18:36Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+ <!--
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
+ <xsl:param name="tbl.font.title">B</xsl:param>
+ <xsl:param name="tbl.font.headings">B</xsl:param>
+ -->
+ <xsl:param name="tbl.running.header.from.thead" select="0"/>
+ <xsl:param name="tbl.column.separator.char">:</xsl:param>
+
+ <!-- ==================================================================== -->
+
+ <!-- * This stylesheet transforms DocBook and HTML table source into -->
+ <!-- * tbl(1) markup. -->
+ <!-- * -->
+ <!-- * For details on tbl(1) and its markup syntaxt, see M. E. Lesk,-->
+ <!-- * "Tbl - A Program to Format Tables": -->
+ <!-- * -->
+ <!-- * http://cm.bell-labs.com/7thEdMan/vol2/tbl -->
+ <!-- * http://cm.bell-labs.com/cm/cs/doc/76/tbl.ps.gz -->
+ <!-- * http://www.snake.net/software/troffcvt/tbl.html -->
+
+ <xsl:template match="table|informaltable" mode="to.tbl">
+ <!--* the "source" param is an optional param; it can be any -->
+ <!--* string you want to use that gives some indication of the -->
+ <!--* source context for a table; it gets passed down to the named -->
+ <!--* templates that do the actual table processing; this -->
+ <!--* stylesheet currently uses the "source" information for -->
+ <!--* logging purposes -->
+ <xsl:param name="source"/>
+ <xsl:param name="title">
+ <xsl:if test="local-name(.) = 'table'">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:if>
+ </xsl:param>
+ <!-- * ============================================================== -->
+ <!-- * Set global table parameters -->
+ <!-- * ============================================================== -->
+ <!-- * First, set a few parameters based on attributes specified in -->
+ <!-- * the table source. -->
+ <xsl:param name="allbox">
+ <xsl:if test="not(@frame = 'none') and not(@border = '0')">
+ <!-- * By default, put a box around table and between all cells, -->
+ <!-- * unless frame="none" or border="0" -->
+ <xsl:text>allbox </xsl:text>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="center">
+ <!-- * If align="center", center the table. Otherwise, tbl(1) -->
+ <!-- * left-aligns it by default; note that there is no support -->
+ <!-- * in tbl(1) for specifying right alignment. -->
+ <xsl:if test="@align = 'center' or tgroup/@align = 'center'">
+ <xsl:text>center </xsl:text>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name="expand">
+ <!-- * If pgwide="1" or width="100%", then "expand" the table by -->
+ <!-- * making it "as wide as the current line length" (to quote -->
+ <!-- * the tbl(1) guide). -->
+ <xsl:if test="@pgwide = '1' or @width = '100%'">
+ <xsl:text>expand </xsl:text>
+ </xsl:if>
+ </xsl:param>
+
+ <!-- * ============================================================== -->
+ <!-- * Convert table to HTML -->
+ <!-- * ============================================================== -->
+ <!-- * Process the table by applying the HTML templates from the -->
+ <!-- * DocBook XSL stylesheets to the whole thing; because we don't -->
+ <!-- * override any of the <row>, <entry>, <tr>, <td>, etc. templates, -->
+ <!-- * the templates in the HTML stylesheets (which we import) are -->
+ <!-- * used to process those. -->
+ <xsl:param name="html-table-output">
+ <xsl:choose>
+ <xsl:when test=".//tr">
+ <!-- * If this table has a TR child, it means that it's an -->
+ <!-- * HTML table in the DocBook source, instead of a CALS -->
+ <!-- * table. So we just copy it as-is, while wrapping it -->
+ <!-- * in an element with same name as its original parent. -->
+ <xsl:for-each select="descendant-or-self::table|descendant-or-self::informaltable">
+ <xsl:element name="{local-name(..)}">
+ <table>
+ <xsl:copy-of select="*"/>
+ </table>
+ </xsl:element>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, this is a CALS table in the DocBook source, -->
+ <!-- * so we need to apply the templates in the HTML -->
+ <!-- * stylesheets to transform it into HTML before we do -->
+ <!-- * any further processing of it. -->
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="contents" select="exsl:node-set($html-table-output)"/>
+
+ <!-- ==================================================================== -->
+ <!-- * Output the table -->
+ <!-- ==================================================================== -->
+ <!-- * -->
+ <!-- * This is the "driver" part of the code; it calls a series of named
+ * templates (further below) to generate the actual tbl(1) markup, -->
+ <!-- * including the optional "options line", required "format section", -->
+ <!-- * and then the actual contents of the table. -->
+ <!-- * -->
+ <!-- ==================================================================== -->
+
+ <xsl:for-each select="$contents//table">
+ <!-- * ============================================================== -->
+ <!-- * Output table title -->
+ <!-- * ============================================================== -->
+ <xsl:if test="$title != '' or parent::td">
+ <xsl:text>.PP&#10;</xsl:text>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="$tbl.font.title"/>
+ <xsl:text> </xsl:text>
+ <xsl:if test="parent::td">
+ <xsl:text>*[nested&#x2580;table]</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="normalize-space($title)"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp -1n&#10;</xsl:text>
+ </xsl:if>
+
+ <!-- * mark the start of the table -->
+ <!-- * "TS" = "table start" -->
+ <xsl:text>.TS</xsl:text>
+ <xsl:if test="thead and $tbl.running.header.from.thead">
+ <!-- * H = "has header" -->
+ <xsl:text> H</xsl:text>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- * ============================================================== -->
+ <!-- * Output "options line" -->
+ <!-- * ============================================================== -->
+ <xsl:variable name="options-line">
+ <xsl:value-of select="$allbox"/>
+ <xsl:value-of select="$center"/>
+ <xsl:value-of select="$expand"/>
+ <xsl:text>tab(</xsl:text>
+ <xsl:value-of select="$tbl.column.separator.char"/>
+ <xsl:text>)</xsl:text>
+ </xsl:variable>
+ <xsl:if test="normalize-space($options-line) != ''">
+ <xsl:value-of select="normalize-space($options-line)"/>
+ <xsl:text>;&#10;</xsl:text>
+ </xsl:if>
+
+ <!-- * ============================================================== -->
+ <!-- * Output table header rows -->
+ <!-- * ============================================================== -->
+ <xsl:if test="thead">
+ <xsl:call-template name="output.rows">
+ <xsl:with-param name="rows" select="thead/tr"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- * mark the end of table-header rows -->
+ <xsl:choose>
+ <xsl:when test="$tbl.running.header.from.thead">
+ <!-- * "TH" = "table header end" -->
+ <xsl:text>.TH&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * "T&" = "table continuation" and is meant just as a kind -->
+ <!-- * of convenience macro and is sorta equivalent to a "TE" -->
+ <!-- * (table end) followed immediately by a "TS" (table start); -->
+ <!-- * in this case, it marks the end of a table "subsection" -->
+ <!-- * with header rows, and the start of a subsection with body -->
+ <!-- * rows. It's necessary to output it here because the "TH" -->
+ <!-- * macro is not being output, so there's otherwise no way -->
+ <!-- * for tbl(1) to know we have the table "sectioned". -->
+ <xsl:text>.T&amp;&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <!-- * ============================================================== -->
+ <!-- * Output table body rows -->
+ <!-- * ============================================================== -->
+ <!-- * First create node set with all non-thead rows (tbody+tfoot), -->
+ <!-- * but reordered with the tfoot rows at the end of the node set -->
+ <xsl:variable name="rows-set">
+ <xsl:copy-of select="tbody/tr|tr"/>
+ <xsl:copy-of select="tfoot/tr"/>
+ </xsl:variable>
+ <xsl:call-template name="output.rows">
+ <xsl:with-param name="source" select="$source"/>
+ <xsl:with-param name="rows" select="exsl:node-set($rows-set)"/>
+ </xsl:call-template>
+
+ <!-- * mark the end of the table -->
+ <xsl:text>&#10;</xsl:text>
+ <!-- * .TE = "Table End" -->
+ <xsl:text>.TE&#10;</xsl:text>
+ <!-- * put a blank line of space below the table -->
+ <xsl:text>.sp&#10;</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- ==================================================================== -->
+ <!-- * named templates -->
+ <!-- ==================================================================== -->
+ <!-- * -->
+ <!-- * All of the following are named templates that get called directly -->
+ <!-- * or indirectly by the main "driver" part of the code (above) -->
+ <!-- * -->
+ <!-- ==================================================================== -->
+
+ <xsl:template name="output.rows">
+ <xsl:param name="source"/>
+ <xsl:param name="rows"/>
+ <!-- * ============================================================== -->
+ <!-- * Flatten row set into simple list of cells -->
+ <!-- * ============================================================== -->
+ <!-- * Now we flatten the structure further into just a set of -->
+ <!-- * cells without the row parents. This basically creates a -->
+ <!-- * copy of the entire contents of the original table, but -->
+ <!-- * restructured in such a way that we can more easily generate -->
+ <!-- * the corresponding tbl(1) markup we need to output. -->
+ <xsl:variable name="cells-list">
+ <xsl:call-template name="build.cell.list">
+ <xsl:with-param name="source" select="$source"/>
+ <xsl:with-param name="rows" select="$rows"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="cells" select="exsl:node-set($cells-list)"/>
+
+ <!-- * Output the table "format section", which tells tbl(1) how to -->
+ <!-- * format each row and column -->
+ <xsl:call-template name="create.table.format">
+ <xsl:with-param name="cells" select="$cells"/>
+ </xsl:call-template>
+
+ <!--* Output the formatted contents of each cell. -->
+ <xsl:for-each select="$cells/cell">
+ <xsl:call-template name="output.cell"/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Output the tbl(1)-formatted contents of each cell. -->
+ <!-- * ============================================================== -->
+ <xsl:template name="output.cell">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::cell[1]/@row != @row or
+ not(preceding-sibling::cell)">
+ <!-- * If the value of the "row" attribute on this cell is -->
+ <!-- * different from the value of that on the previous cell, it -->
+ <!-- * means we have a new row. So output a line break (as long -->
+ <!-- * as this isn't the first cell in the table) -->
+ <xsl:text>&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise we are not at the start of a new row, so we -->
+ <!-- * output a tab character to delimit the contents of this -->
+ <!-- * cell from the contents of the next one. -->
+ <xsl:value-of select="$tbl.column.separator.char"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="@type = '^'">
+ <!-- * If this is a dummy cell resulting from the presence of -->
+ <!-- * rowpan attribute in the source, it has no contents, so -->
+ <!-- * we need to handle it differently. -->
+ <xsl:if test="@colspan and @colspan > 1">
+ <!-- * If there is a colspan attribute on this dummy row, then -->
+ <!-- * we need to output a tab character for each column that -->
+ <!-- * it spans. -->
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="$tbl.column.separator.char"/>
+ <xsl:with-param name="count">
+ <xsl:value-of select="@colspan - 1"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Otherwise, we have a "real" cell (not a dummy one) with -->
+ <!-- * contents that we need to output, -->
+ <!-- * -->
+ <!-- * The "T{" and "T}" stuff are delimiters to tell tbl(1) that -->
+ <!-- * the delimited contents are "text blocks" that roff -->
+ <!-- * needs to process -->
+ <xsl:text>T{&#10;</xsl:text>
+ <xsl:copy-of select="."/>
+ <xsl:text>&#10;T}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Build a restructured "cell list" copy of the entire table -->
+ <!-- * ============================================================== -->
+ <xsl:template name="build.cell.list">
+ <xsl:param name="source"/>
+ <xsl:param name="rows"/>
+ <xsl:param name="cell-data-unsorted">
+ <!-- * This param collects all the "real" cells from the table, -->
+ <!-- * along with "dummy" rows that we generate for keeping -->
+ <!-- * track of Rowspan instances. -->
+ <xsl:apply-templates select="$rows" mode="cell.list">
+ <xsl:with-param name="source" select="$source"/>
+ </xsl:apply-templates>
+ </xsl:param>
+ <xsl:param name="cell-data-sorted">
+ <!-- * Sort the cells so that the dummy cells get put where we -->
+ <!-- * need them in the structure. Note that we need to specify -->
+ <!-- * data-type="number" here because the default sorting method -->
+ <!-- * for xsl:sort is "text" (alphabetical). -->
+ <xsl:for-each select="exsl:node-set($cell-data-unsorted)/cell">
+ <xsl:sort select="@row" data-type="number"/>
+ <xsl:sort select="@slot" data-type="number"/>
+ <xsl:copy-of select="."/>
+ </xsl:for-each>
+ </xsl:param>
+ <!-- * Return the sorted cell list -->
+ <xsl:copy-of select="$cell-data-sorted"/>
+ </xsl:template>
+
+ <xsl:template match="tr" mode="cell.list">
+ <xsl:param name="source"/>
+ <xsl:variable name="row">
+ <xsl:value-of select="count(preceding-sibling::tr) + 1"/>
+ </xsl:variable>
+ <xsl:for-each select="td|th">
+ <xsl:call-template name="cell">
+ <xsl:with-param name="source" select="$source"/>
+ <xsl:with-param name="row" select="$row"/>
+ <!-- * pass on the element name so we can select the appropriate -->
+ <!-- * roff font for styling the cell contents -->
+ <xsl:with-param name="class" select="name(.)"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="cell">
+ <xsl:param name="source"/>
+ <xsl:param name="row"/>
+ <xsl:param name="class"/>
+ <xsl:param name="slot">
+ <!-- * The "slot" is the horizontal position of this cell (usually -->
+ <!-- * just the same as its column, but not so when it is preceded -->
+ <!-- * by cells that have colspans or cells in preceding rows that -->
+ <!-- * that have rowspans). -->
+ <xsl:value-of select="position()"/>
+ </xsl:param>
+ <!-- * For each real TD cell, create a Cell instance; contents will -->
+ <!-- * be the roff-formatted contents of its original table cell. -->
+ <cell type=""
+ row="{$row}"
+ slot="{$slot}"
+ class="{$class}"
+ colspan="{@colspan}"
+ align="{@align}"
+ valign="{@valign}"
+ >
+ <xsl:choose>
+ <xsl:when test=".//tr">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Warn</xsl:with-param>
+ <xsl:with-param name="source" select="$source"/>
+ <xsl:with-param name="context-desc">tbl convert</xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>Extracted a nested table</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>[\fInested&#x2580;table\fR]*&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Apply templates to the child contents of this cell, to -->
+ <!-- * transform them into marked-up roff. -->
+ <xsl:variable name="contents">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <!-- * We now have the contents in roff (plain-text) form, -->
+ <!-- * but we may also still have unnecessary whitespace at -->
+ <!-- * the beginning and/or end of it, so trim it off. -->
+ <xsl:call-template name="trim.text">
+ <xsl:with-param name="contents" select="$contents"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </cell>
+
+ <!-- * For each instance of a rowspan attribute found, we create N -->
+ <!-- * dummy cells, where N is equal to the value of the rowspan. -->
+ <xsl:if test="@rowspan and @rowspan > 0">
+ <!-- * If this cell is preceded in the same row by cells that -->
+ <!-- * have colspan attributes, then we need to calculate the -->
+ <!-- * "offset" caused by those colspan instances; the formula -->
+ <!-- * is to (1) check for all the preceding cells that have -->
+ <!-- * colspan attributes that are not empty and which have a -->
+ <!-- * value greater than 1, then (2) take the sum of the values -->
+ <!-- * of all those colspan attributes, and subtract from that -->
+ <!-- * the number of such colspan instances found. -->
+ <xsl:variable name="colspan-offset">
+ <xsl:value-of
+ select="sum(preceding-sibling::td[@colspan != ''
+ and @colspan > 1]/@colspan) -
+ count(preceding-sibling::td[@colspan != ''
+ and @colspan > 1]/@colspan)"/>
+ </xsl:variable>
+ <xsl:call-template name="create.dummy.cells">
+ <xsl:with-param name="row" select="$row + 1"/>
+ <!-- * The slot value on each dummy cell must be offset by the -->
+ <!-- * value of $colspan-offset to adjust for preceding colpans -->
+ <xsl:with-param name="slot" select="$slot + $colspan-offset"/>
+ <xsl:with-param name="colspan" select="@colspan"/>
+ <xsl:with-param name="rowspan" select="@rowspan"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="create.dummy.cells">
+ <xsl:param name="row"/>
+ <xsl:param name="slot"/>
+ <xsl:param name="colspan"/>
+ <xsl:param name="rowspan"/>
+ <xsl:choose>
+ <xsl:when test="$rowspan > 1">
+ <!-- * Tail recurse until we have no more rowspans, creating -->
+ <!-- * an empty dummy cell each time. The type value, '^' -->
+ <!-- * is the marker that tbl(1) uses to indicate a -->
+ <!-- * "vertically spanned heading". -->
+ <cell row="{$row}" slot="{$slot}" type="^" colspan="{@colspan}"/>
+ <xsl:call-template name="create.dummy.cells">
+ <xsl:with-param name="row" select="$row + 1"/>
+ <xsl:with-param name="slot" select="$slot"/>
+ <xsl:with-param name="colspan" select="$colspan"/>
+ <xsl:with-param name="rowspan" select="$rowspan - 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * Build the "format section" for the table -->
+ <!-- * ============================================================== -->
+ <!-- * Description from the tbl(1) guide: -->
+ <!-- * -->
+ <!-- * "The format section of the table specifies the layout of the -->
+ <!-- * columns. Each line in this section corresponds to one line of -->
+ <!-- * the table... and each line contains a key-letter for each -->
+ <!-- * column of the table." -->
+ <xsl:template name="create.table.format">
+ <xsl:param name="cells"/>
+ <xsl:apply-templates mode="table.format" select="$cells"/>
+ <!-- * last line of table format section must end with a dot -->
+ <xsl:text>.</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="cell" mode="table.format">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::cell[1]/@row != @row">
+ <!-- * If the value of the row attribute on this cell is -->
+ <!-- * different from the value of that on the previous cell, it -->
+ <!-- * means we have a new row. So output a line break. -->
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * If this isn't the first cell, output a space before it to -->
+ <!-- * separate it from the preceding key letter. -->
+ <xsl:if test="position() != 1">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- * Select an appropriate "alignment" key letter based on this -->
+ <!-- * cell's attributes. -->
+ <xsl:choose>
+ <xsl:when test="@type = '^'">
+ <xsl:text>^</xsl:text>
+ </xsl:when>
+ <xsl:when test="@align = 'center'">
+ <xsl:text>c</xsl:text>
+ </xsl:when>
+ <xsl:when test="@align = 'right'">
+ <xsl:text>r</xsl:text>
+ </xsl:when>
+ <xsl:when test="@align = 'char'">
+ <xsl:text>n</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * Default to left alignment. -->
+ <xsl:text>l</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- * By default, tbl(1) vertically centers cell contents within -->
+ <!-- * their cells; the "t" key latter tells it to top-align the -->
+ <!-- * contents instead. Note that tbl(1) has no options for -->
+ <!-- * bottom or baseline alignment. -->
+ <xsl:if test="@valign = 'top'">
+ <xsl:text>t</xsl:text>
+ </xsl:if>
+ <xsl:if test="@class = 'th'">
+ <!-- * If this is a heading row, generate a font indicator (B or I), -->
+ <!-- * or if the value of $tbl.font.headings is empty, nothing. -->
+ <xsl:value-of select="$tbl.font.headings"/>
+ </xsl:if>
+ <!-- * We only need to deal with colspans whose value is greater -->
+ <!-- * than one (a colspan="1" is the same as having no colspan -->
+ <!-- * attribute at all). -->
+ <xsl:if test="@colspan > 1">
+ <xsl:call-template name="process.colspan">
+ <xsl:with-param name="colspan" select="@colspan - 1"/>
+ <xsl:with-param name="type" select="@type"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="process.colspan">
+ <xsl:param name="colspan"/>
+ <xsl:param name="type"/>
+ <!-- * Output a space to separate this key letter from preceding one. -->
+ <xsl:text> </xsl:text>
+ <xsl:choose>
+ <xsl:when test="$type = '^'">
+ <!-- * A '^' ("vertically spanned heading" marker) indicates -->
+ <!-- * that the "parent" of this spanned cell is a dummy cell; -->
+ <!-- * in this case, we need to generate a '^' instead of the -->
+ <!-- * normal 's'. -->
+ <xsl:text>^</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * s = 'spanned heading' -->
+ <xsl:text>s</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$colspan > 1">
+ <!-- * Tail recurse until we have no more colspans, outputting -->
+ <!-- * another marker each time. -->
+ <xsl:call-template name="process.colspan">
+ <xsl:with-param name="colspan" select="$colspan - 1"/>
+ <xsl:with-param name="type" select="$type"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- * ============================================================== -->
+ <!-- * colgroup and col -->
+ <!-- * ============================================================== -->
+ <!-- * We currently don't do anything with colgroup. Not sure if it -->
+ <!-- * is widely used enough to bother adding support for it -->
+ <xsl:template match="colgroup"/>
+ <xsl:template match="col"/>
+
+ <!-- * ============================================================== -->
+ <!-- * table footnotes -->
+ <!-- * ============================================================== -->
+ <xsl:template match="footnote" mode="table.footnote.mode">
+ <xsl:variable name="footnotes" select=".//footnote"/>
+ <xsl:variable name="table.footnotes"
+ select=".//tgroup//footnote"/>
+ <xsl:value-of select="$man.table.footnotes.divider"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ <xsl:apply-templates select="*[1]" mode="footnote.body.number"/>
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+ </xsl:template>
+
+ <!-- * The following template for footnote.body.number mode was just -->
+ <!-- * lifted from the HTML stylesheets with some minor adjustments -->
+ <xsl:template match="*" mode="footnote.body.number">
+ <xsl:variable name="name">
+ <xsl:text>ftn.</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="ancestor::footnote"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="footnote.mark">
+ <xsl:text>[</xsl:text>
+ <xsl:apply-templates select="ancestor::footnote"
+ mode="footnote.number"/>
+ <xsl:text>]&#10;</xsl:text>
+ </xsl:variable>
+ <xsl:variable name="html">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')">
+ <xsl:variable name="html-nodes" select="exsl:node-set($html)"/>
+ <xsl:choose>
+ <xsl:when test="$html-nodes//p">
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.p">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$html-nodes" mode="insert.html.text">
+ <xsl:with-param name="mark" select="$footnote.mark"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$html"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- * The HTML stylesheets output <sup><a>...</a></sup> around -->
+ <!-- * footnote markers in tables -->
+ <xsl:template match="th/sup">
+ <xsl:apply-templates/>
+ </xsl:template>
+ <xsl:template match="a">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xsl-generic/manpages/utility.xsl b/docs/xsl-generic/manpages/utility.xsl
new file mode 100644
index 00000000..cf72479b
--- /dev/null
+++ b/docs/xsl-generic/manpages/utility.xsl
@@ -0,0 +1,452 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:dyn="http://exslt.org/dynamic"
+ xmlns:saxon="http://icl.com/saxon"
+ exclude-result-prefixes="exsl dyn saxon"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id: utility.xsl 6843 2007-06-20 12:21:13Z xmldoc $
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- * This file contains "utility" templates that are called multiple -->
+<!-- * times per each Refentry. -->
+
+<!-- ==================================================================== -->
+
+ <!-- * NOTE TO DEVELOPERS: For ease of maintenance, the current -->
+ <!-- * manpages stylesheets use the "bold" and "italic" named -->
+ <!-- * templates for anything and everything that needs to get -->
+ <!-- * boldfaced or italicized. -->
+ <!-- * -->
+ <!-- * So if you add anything that needs bold or italic character -->
+ <!-- * formatting, try to apply these templates to it rather than -->
+ <!-- * writing separate code to format it. This can be a little odd if -->
+ <!-- * the content you want to format is not element content; in those -->
+ <!-- * cases, you need to turn it into element content before applying -->
+ <!-- * the template; see examples of this in the existing code. -->
+
+ <xsl:template name="bold">
+ <xsl:param name="node"/>
+ <xsl:param name="context"/>
+ <xsl:choose>
+ <xsl:when test="not($context[ancestor::title])">
+ <xsl:for-each select="$node/node()">
+ <xsl:text>\fB</xsl:text>
+ <xsl:apply-templates select="."/>
+ <xsl:text>\fR</xsl:text>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$node/node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="italic">
+ <xsl:param name="node"/>
+ <xsl:param name="context"/>
+ <xsl:for-each select="$node/node()">
+ <xsl:text>\fI</xsl:text>
+ <xsl:apply-templates select="."/>
+ <xsl:text>\fR</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * NOTE TO DEVELOPERS: For ease of maintenance, the current -->
+ <!-- * manpages stylesheets use the mode="prevent.line.breaking" -->
+ <!-- * templates for anything and everything that needs to have -->
+ <!-- * embedded spaces turned into no-break spaces in output - in -->
+ <!-- * order to prevent that output from getting broken across lines -->
+ <!-- * -->
+ <!-- * So if you add anything that whose output, try to apply this -->
+ <!-- * template to it rather than writing separate code to format -->
+ <!-- * it. This can be a little odd if the content you want to -->
+ <!-- * format is not element content; in those cases, you need to -->
+ <!-- * turn it into element content before applying the template; -->
+ <!-- * see examples of this in the existing code. -->
+ <!-- * -->
+ <!-- * This template is currently called by the funcdef and paramdef -->
+ <!-- * and group/arg templates. -->
+ <xsl:template mode="prevent.line.breaking" match="*">
+ <xsl:variable name="rcontent">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:variable name="content">
+ <xsl:value-of select="normalize-space($rcontent)"/>
+ </xsl:variable>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target" select="' '"/>
+ <!-- * U+2580 is a "UPPER HALF BLOCK"; we use it here because -->
+ <!-- * if we were to just use a normal space, it would get -->
+ <!-- * replaced when normalization is done. We replace it -->
+ <!-- * later with the groff markup for non-breaking space. -->
+ <xsl:with-param name="replacement" select="'&#x2580;'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <xsl:template name="suppress.hyphenation">
+ <!-- * we need to suppress hyphenation inline only if hyphenation is -->
+ <!-- * actually on, and even then only outside of Cmdsynopsis and -->
+ <!-- * Funcsynopsis, where it is already always turned off -->
+ <xsl:if test="$man.hyphenate != 0 and
+ not(ancestor::cmdsynopsis) and
+ not(ancestor::funcsynopsis)">
+ <xsl:text>\%</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The replace.dots.and.dashes template is used to cause real -->
+ <!-- * dots and dashes to be output in the top comment (instead of -->
+ <!-- * escaped ones as in the source for the text displayed in the -->
+ <!-- * body of the page) -->
+ <xsl:template name="replace.dots.and.dashes">
+ <xsl:param name="content">
+ <xsl:apply-templates/>
+ </xsl:param>
+ <xsl:variable name="dot-content">
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$content"/>
+ <xsl:with-param name="target" select="'\.'"/>
+ <xsl:with-param name="replacement" select="'.'"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="string.subst">
+ <xsl:with-param name="string" select="$dot-content"/>
+ <xsl:with-param name="target" select="'\-'"/>
+ <xsl:with-param name="replacement" select="'-'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The nested-section-title template is called for refsect3, and any -->
+ <!-- * refsection nested more than 2 levels deep. -->
+ <xsl:template name="nested-section-title">
+ <!-- * The next few lines are some arcane roff code to control line -->
+ <!-- * spacing after headings. -->
+ <xsl:text>.sp&#10;</xsl:text>
+ <xsl:text>.it 1 an-trap&#10;</xsl:text>
+ <xsl:text>.nr an-no-space-flag 1&#10;</xsl:text>
+ <xsl:text>.nr an-break-flag 1&#10;</xsl:text>
+ <xsl:text>.br&#10;</xsl:text>
+ <!-- * make title wrapper so that we can use mode="bold" template to -->
+ <!-- * apply character formatting to it -->
+ <xsl:variable name="title.wrapper">
+ <bold><xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="normalize-space(title[1])"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:otherwise>
+ </xsl:choose></bold>
+ </xsl:variable>
+ <xsl:call-template name="mark.subheading"/>
+ <xsl:apply-templates mode="bold" select="exsl:node-set($title.wrapper)"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="mark.subheading"/>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The mixed-block template jumps through a few hoops to deal with -->
+ <!-- * mixed-content blocks, so that we don't end up munging verbatim -->
+ <!-- * environments or lists and so that we don't gobble up whitespace -->
+ <!-- * when we shouldn't -->
+ <xsl:template name="mixed-block">
+ <xsl:for-each select="node()">
+ <xsl:choose>
+ <!-- * Check to see if this node is a verbatim environment. -->
+ <!-- * If so, put a line of space before it. -->
+ <!-- * -->
+ <!-- * Yes, address and synopsis are vertabim environments. -->
+ <!-- * -->
+ <!-- * The code here previously also treated informaltable as a -->
+ <!-- * verbatim, presumably to support some kludge; I removed it -->
+ <xsl:when test="self::address|self::literallayout|self::programlisting|
+ self::screen|self::synopsis">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.sp&#10;</xsl:text>
+ <xsl:call-template name="mark.up.block.start"/>
+ <xsl:apply-templates select="."/>
+ </xsl:when>
+ <!-- * Check to see if this node is a list; if it is, we don't -->
+ <!-- * want to normalize-space(), so we just apply-templates. -->
+ <!-- * Do same for all admonitions -->
+ <xsl:when test="(self::itemizedlist|self::orderedlist|
+ self::variablelist|self::glosslist|
+ self::simplelist[@type !='inline']|
+ self::segmentedlist|
+ self::caution|self::important|
+ self::note|self::tip|self::warning|
+ self::table|self::informaltable)">
+ <xsl:call-template name="mark.up.block.start"/>
+ <xsl:apply-templates select="."/>
+ </xsl:when>
+ <xsl:when test="self::text()">
+ <!-- * Check to see if this is a text node. -->
+ <!-- * -->
+ <!-- * If so, replace all whitespace at the beginning or end of it -->
+ <!-- * with a single linebreak. -->
+ <!-- * -->
+ <xsl:variable name="content">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:if
+ test="starts-with(translate(.,'&#9;&#10;&#13; ',' '), ' ')
+ and preceding-sibling::node()[1][name(.)!='']
+ and normalize-space($content) != ''
+ and not(
+ preceding-sibling::*[1][
+ self::caution or
+ self::important or
+ self::note or
+ self::tip or
+ self::warning or
+ self::variablelist or
+ self::glosslist or
+ self::itemizedlist or
+ self::orderedlist or
+ self::segmentedlist or
+ self::procedure or
+ self::address or
+ self::literallayout or
+ self::programlisting or
+ self::screen or
+ self::table or
+ self::informaltable
+ ]
+ )
+ ">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="normalize-space($content)"/>
+ <xsl:if
+ test="(translate(substring(., string-length(.), 1),'&#9;&#10;&#13; ',' ') = ' '
+ and following-sibling::node()[1][name(.)!=''])
+ or following-sibling::node()[1][self::comment()]
+ or following-sibling::node()[1][self::processing-instruction()]
+ ">
+ <xsl:if test="normalize-space($content) != ''
+ or concat(normalize-space($content), ' ') = ' '">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * At this point, we know that this node is not a verbatim -->
+ <!-- * environment, list, admonition, or text node; so we can -->
+ <!-- * safely normalize-space() it. -->
+ <xsl:variable name="content">
+ <xsl:apply-templates select="."/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:call-template name="mark.up.block.end"/>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * Footnote and annotation contents are displayed using a hanging -->
+ <!-- * indent out to $man.indent.width If a paragraph-level block -->
+ <!-- * element (verbatim, list, or admonition) is the first block -->
+ <!-- * element nested at its same level within the same footnote or -->
+ <!-- * annotation, then we push it over by the same indent width. -->
+ <!-- * -->
+ <!-- * We don't reset the indent for each following sibling, but -->
+ <!-- * instead do it after for-eaching over all block siblings at -->
+ <!-- * the same level. So the effect is that if there are any -->
+ <!-- * following-sibling blocks after the block that starts this -->
+ <!-- * indent, then they just retain the indent that was already set -->
+
+ <xsl:template name="mark.up.block.start">
+ <xsl:choose>
+ <xsl:when test="(ancestor::footnote
+ or ancestor::annotation)">
+ <xsl:if test="not(preceding-sibling::address|
+ preceding-sibling::literallayout|
+ preceding-sibling::programlisting|
+ preceding-sibling::screen|
+ preceding-sibling::synopsis|
+ preceding-sibling::itemizedlist|
+ preceding-sibling::orderedlist|
+ preceding-sibling::variablelist|
+ preceding-sibling::glosslist|
+ preceding-sibling::simplelist[@type !='inline']|
+ preceding-sibling::segmentedlist|
+ preceding-sibling::caution|
+ preceding-sibling::important|
+ preceding-sibling::note|
+ preceding-sibling::tip|
+ preceding-sibling::warning|
+ preceding-sibling::table|
+ preceding-sibling::informaltable
+ )">
+ <xsl:text>.RS</xsl:text>
+ <xsl:if test="not($list-indent = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$list-indent"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- * Check to see if we were called from a block within a footnote or -->
+ <!-- * annotation; if so, and the block contains any nested block -->
+ <!-- * content, then we know the mark.up.block.end template was already -->
+ <!-- * called to generate a .RS macro to indent that nested block -->
+ <!-- * content; so we need to generate a .RE to set the margin back to -->
+ <!-- * where it was prior to the .RS call. -->
+ <xsl:template name="mark.up.block.end">
+ <xsl:if test="(ancestor::footnote
+ or ancestor::annotation)">
+ <xsl:if test="address|
+ literallayout|
+ programlisting|
+ screen|
+ synopsis|
+ itemizedlist|
+ orderedlist|
+ variablelist|
+ glosslist|
+ simplelist[@type !='inline']|
+ segmentedlist|
+ caution|
+ important|
+ note|
+ tip|
+ warning|
+ table|
+ informaltable">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.RE</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * The person.name template in the HTML stylesheets outputs extra -->
+ <!-- * spaces that we need to strip out for manpages output. This -->
+ <!-- * template calls person.name, then tries to do some smart -->
+ <!-- * normalization of the result tree fragment from that. -->
+ <xsl:template name="person.name.normalized">
+ <xsl:variable name="contents">
+ <xsl:call-template name="person.name"/>
+ </xsl:variable>
+ <!-- * We put the output of person.name into a node-set and then we -->
+ <!-- * check it node-by-node and strip out space only where needed. -->
+ <xsl:variable name="contents.tree" select="exsl:node-set($contents)"/>
+ <xsl:for-each select="$contents.tree/node()">
+ <xsl:choose>
+ <!-- * We don't want to monkey with single spaces or commas/periods -->
+ <!-- * followed by spaces, because those are bits of text that are -->
+ <!-- * actually generated by the person.name template itself (that -->
+ <!-- * is, they're not in the source). So, we preserve them. -->
+ <xsl:when test=". = ' ' or . = ', ' or . = '. '">
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <xsl:template name="make.adjusted.man.filename">
+ <xsl:param name="name"/>
+ <xsl:param name="lang"/>
+ <xsl:param name="name.with.lang">
+ <xsl:choose>
+ <xsl:when test="$lang != 'en'
+ and not($man.output.lang.in.name.enabled = 0)
+ and ($man.output.subdirs.enabled = 0 or
+ $man.output.in.separate.dir = 0)">
+ <!-- * $lang is not en (English) -->
+ <!-- * AND user has specified man.output.lang.in.name.enabled -->
+ <!-- * AND doesn't want output going into separate dirs, -->
+ <!-- * SO... we include the $lang value in the filename; e.g., -->
+ <!-- * foo.ja.1 -->
+ <xsl:value-of select="concat($name, '.', $lang)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- * user either has man.output.lang.in.name.enabled unset -->
+ <!-- * or has set it but also has man.output.subdirs.enabled -->
+ <!-- * set (in which case the $lang value is used to add a -->
+ <!-- * $lang subdir in the pathname); in either case, we don't -->
+ <!-- * want to include the $lang in the filename -->
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="section"/>
+ <xsl:param name="dirname">
+ <xsl:if test="not($man.output.in.separate.dir = 0)">
+ <xsl:choose>
+ <xsl:when test="not($man.output.subdirs.enabled = 0)">
+ <xsl:variable name="lang.subdir">
+ <xsl:if test="not($man.output.lang.in.name.enabled = 0)">
+ <!-- * user has man.output.lang.in.name.enabled set, so -->
+ <!-- * we need to add a $lang subdir -->
+ <xsl:value-of select="concat($lang, '/')"/>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:value-of
+ select="concat($man.output.base.dir, $lang.subdir,
+ 'man', normalize-space($section), '/')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$man.output.base.dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:param>
+ <xsl:call-template name="string.subst">
+ <!-- * To create the man filename, replace any spaces in filename with -->
+ <!-- * underscores and then append a dot plus a section number. -->
+ <xsl:with-param name="string"
+ select="concat($dirname,
+ normalize-space($name.with.lang),
+ '.', normalize-space($section))"/>
+ <xsl:with-param name="target" select="' '"/>
+ <xsl:with-param name="replacement" select="'_'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ================================================================== -->
+
+ <!-- * Put a horizontal rule or other divider around section titles -->
+ <!-- * in roff source (just to make things easier to read). -->
+ <xsl:template name="mark.subheading">
+ <xsl:if test="$man.subheading.divider.enabled != 0">
+ <xsl:text>.\" </xsl:text>
+ <xsl:value-of select="$man.subheading.divider"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/infrastructure/BoxPlatform.pm.in b/infrastructure/BoxPlatform.pm.in
index 8657134e..59ab5d85 100644
--- a/infrastructure/BoxPlatform.pm.in
+++ b/infrastructure/BoxPlatform.pm.in
@@ -89,14 +89,14 @@ BEGIN
my $cpus = `sysctl hw.ncpu`;
if($cpus =~ m/hw.ncpu:\s(\d+)/ && $1 > 1)
{
- print "$1 processors detected, will set make to perform concurrent jobs\n";
+ print STDERR "$1 processors detected, will set make to perform concurrent jobs\n";
$sub_make_options = ' -j '.($1 + 1);
}
# test for fink installation
if(-d '/sw/include' && -d '/sw/lib')
{
- print "Fink installation detected, will use headers and libraries\n";
+ print STDERR "Fink installation detected, will use headers and libraries\n";
$platform_compile_line_extra = '-I/sw/include ';
$platform_link_line_extra = '-L/sw/lib ';
}
diff --git a/infrastructure/makebuildenv.pl.in b/infrastructure/makebuildenv.pl.in
index 5ed4a0ab..9f53e2c6 100755
--- a/infrastructure/makebuildenv.pl.in
+++ b/infrastructure/makebuildenv.pl.in
@@ -55,7 +55,7 @@ while(<FINDAUTOGEN>)
my $dir = $1;
open FL,$file or die "Can't open $_ for reading";
my %vars;
- $vars{PERL} = "@PERL@";
+ $vars{_PERL} = "@PERL@";
my $do_cmds = 0;
while(<FL>)
{
@@ -428,9 +428,16 @@ __E
if (-d "$module/testfiles")
{
print TESTFILE <<__E;
+kill_daemons()
+{
+ kill_process bbackupd
+ kill_process bbstored
+ kill_process httpserver
+ kill_process s3simulator
+}
+
echo Killing any running daemons...
-kill_process bbackupd
-kill_process bbstored
+kill_daemons
__E
}
@@ -457,8 +464,7 @@ __E
if (-d "$module/testfiles")
{
print TESTFILE <<__E;
-kill_process bbackupd
-kill_process bbstored
+kill_daemons
__E
}
@@ -584,6 +590,7 @@ _LINK = \$(CXX)
_WINDRES = \$(WINDRES)
_AR = \$(AR)
_RANLIB = \$(RANLIB)
+_PERL = \$(PERL)
.else
HIDE = @
_CXX = @ echo " [CXX] " \$(*F) && \$(CXX)
@@ -591,6 +598,7 @@ _LINK = @ echo " [LINK] " \$(*F) && \$(CXX)
_WINDRES = @ echo " [WINDRES]" \$(*F) && \$(WINDRES)
_AR = @ echo " [AR] " \$(*F) && \$(AR)
_RANLIB = @ echo " [RANLIB] " \$(*F) && \$(RANLIB)
+_PERL = @ echo " [PERL] " \$(*F) && \$(PERL) >/dev/null
.endif
__E
@@ -604,6 +612,7 @@ _LINK = \$(if \$(V),\$(CXX), @ echo " [LINK] \$@" && \$(CXX))
_WINDRES = \$(if \$(V),\$(WINDRES), @ echo " [WINDRES] \$<" && \$(WINDRES))
_AR = \$(if \$(V),\$(AR), @ echo " [AR] \$@" && \$(AR))
_RANLIB = \$(if \$(V),\$(RANLIB), @ echo " [RANLIB] \$@" && \$(RANLIB))
+_PERL = \$(if \$(V),\$(PERL), @ echo " [PERL] \$@" && \$(PERL) >/dev/null)
__E
}
diff --git a/infrastructure/makedistribution.pl.in b/infrastructure/makedistribution.pl.in
index 3914780a..0ccd92be 100755
--- a/infrastructure/makedistribution.pl.in
+++ b/infrastructure/makedistribution.pl.in
@@ -12,12 +12,15 @@ my %comment_chars = ('cpp' => '// ', 'h' => '// ', 'pl' => '# ', 'pm' => '# ', '
my %text_files = ('txt' => 1, 'spec' => 1, 'in' => 1);
# files which don't get the license added
-my %no_license = (); # 'filename' => 1
+# my %file_license = (); # 'filename' => 'GPL', 'DUAL' or 'none'
# ----------------------------------------------
# filled in from the manifest file
-my %no_license_dir = ();
+# my %dir_license = (); # 'dir' => 'GPL', 'DUAL' or 'none'
+#
+# most recently specified LICENSE become default until overridden
+my $current_license; # 'GPL', 'DUAL' or 'none'
# distribution name
my $distribution = $ARGV[0];
@@ -68,12 +71,17 @@ system "rm -rf $base_name";
system "rm $base_name.tgz";
mkdir $base_name,0755;
-# get license file
-open LICENSE,"$dist_root/LICENSE.txt" or die "Can't open $dist_root/LICENSE.txt";
-my $license_f;
-read LICENSE,$license_f,100000;
-close LICENSE;
-my @license = ('distribution '.$base_name.' (svn version: '.$svnversion.')',split(/\n/,$license_f));
+# get license files
+my %license_text; # name of license => array of lines of license text
+foreach my $license ("GPL", "DUAL")
+{
+ my $file = "./LICENSE-$license.txt";
+ open LICENSE, $file or die "Can't open $file: $!";
+ my @lines = <LICENSE>;
+ close LICENSE;
+ unshift @lines, "distribution $base_name (svn version: $svnversion)\n";
+ $license_text{$license} = \@lines;
+}
# copy files, make a note of all the modules included
my %modules_included;
@@ -88,41 +96,22 @@ sub copy_from_list
{
next unless $line =~ m/\S/;
chomp $line;
- my ($src,$dst,$other) = split /\s+/, $line;
+ my @words = split /\s+/, $line;
+ my ($src,$dst,$other) = @words;
$dst = $src if $dst eq '';
if($src eq 'MKDIR')
{
# actually we just need to make a directory here
mkdir "$base_name/$dst",0755;
}
- elsif($src eq 'NO-LICENSE-IN-DIR')
+ elsif($src eq 'LICENSE')
{
- my ($junk,$spec) = split /\s+/, $line;
- # record that this directory shouldn't have the license added
- $no_license_dir{$dst} = 1;
-
- # actually copy it, to remove redundancy in manifests
- $src = $dst;
- $dst = $other;
- $dst = $src if $dst eq '';
- $modules_included{$spec} = 1;
- copy_dir($src,$dst);
+ $current_license = $dst;
}
elsif($src eq 'REPLACE-VERSION-IN')
{
replace_version_in($dst);
}
- elsif($src eq 'NO-LICENSE')
- {
- $no_license{$dst} = 1;
-
- # actually copy it, to remove redundancy in manifests
- $src = $dst;
- $dst = $other;
- $dst = $src if $dst eq '';
-
- copy_file($src,$dst);
- }
elsif($src eq 'RUN')
{
my ($junk,$cmd) = split /\s+/, $line, 2;
@@ -189,21 +178,17 @@ sub copy_file
my $ext;
$ext = $1 if $fn =~ m/\.(\w+)\Z/;
-
- # licenses not used in this directory?
- my $license_in_dir = 1;
$dst_fn =~ m~\A(.+)/[^/]+?\Z~;
- $license_in_dir = 0 if exists $no_license_dir{$1};
# licensed or not?
- if(exists $comment_chars{$ext} && !exists $no_license{$fn} && $license_in_dir)
+ if(exists $comment_chars{$ext} && $current_license ne "none")
{
# copy as text, inserting license
# print "source copy $fn to $base_name/$dst_fn\n";
my $in = gensym;
- open $in,$fn;
- open OUT,">$base_name/$dst_fn";
+ open $in,$fn or die "$fn: $!";
+ open OUT,">$base_name/$dst_fn" or die "$base_name/$dst_fn: $!";
my $first = <$in>;
if($first =~ m/\A#!/)
@@ -214,9 +199,10 @@ sub copy_file
# write license
my $b = $comment_chars{$ext};
- for(@license)
+ my $this_license = $license_text{$current_license};
+ for (@$this_license)
{
- print OUT $b,$_,"\n"
+ print OUT $b, $_;
}
if($first ne '')
@@ -241,8 +227,8 @@ sub copy_file
# print "text copy $fn to $base_name/$dst_fn\n";
my $in = gensym;
- open $in,$fn;
- open OUT,">$base_name/$dst_fn";
+ open $in,$fn or die "$fn: $!";
+ open OUT,">$base_name/$dst_fn" or die "$base_name/$dst_fn: $!";
while(<$in>)
{
diff --git a/infrastructure/makeparcels.pl.in b/infrastructure/makeparcels.pl.in
index cc54b23f..41dab287 100755
--- a/infrastructure/makeparcels.pl.in
+++ b/infrastructure/makeparcels.pl.in
@@ -66,6 +66,19 @@ open PARCELS,"parcels.txt" or die "Can't open parcels file";
next;
}
next if (m'\AEND-ONLY');
+
+ if (m'\AEXCEPT:(.+)')
+ {
+ if (os_matches($1))
+ {
+ while (<PARCELS>)
+ {
+ last if m'\AEND-EXCEPT';
+ }
+ }
+ next;
+ }
+ next if (m'\AEND-EXCEPT');
# new parcel, or a new parcel definition?
if(m/\A\s+(.+)\Z/)
@@ -102,25 +115,7 @@ __E
print MAKE "all:\t",join(' ',map {"build-".$_} @parcels),"\n\n";
-print MAKE "clean:\n";
-for my $parcel (@parcels)
-{
- print MAKE "\trm -rf ", BoxPlatform::parcel_dir($parcel), "\n";
- print MAKE "\trm -f ", BoxPlatform::parcel_target($parcel), "\n";
-}
-
-if ($build_os eq 'CYGWIN')
-{
- print MAKE "\tfind release debug -type f | xargs -r rm -f\n";
-}
-else
-{
- print MAKE "\tfind release debug -type f -exec rm -f {} \\;\n";
-}
-
print MAKE <<__END_OF_FRAGMENT;
- \$(MAKE) -C docs clean
-
test: release/common/test
release/common/test:
@@ -133,6 +128,7 @@ docs:
__END_OF_FRAGMENT
my $release_flag = BoxPlatform::make_flag('RELEASE');
+my @clean_deps;
for my $parcel (@parcels)
{
@@ -228,6 +224,38 @@ docs/man/${name}.gz:
EOF
push @parcel_deps, "$dir/${name}.gz";
}
+ elsif($type eq 'html')
+ {
+ print MAKE <<EOF;
+$dir/docs/${name}.html: docs/htmlguide/man-html/${name}.html
+ mkdir -p $dir/docs
+ $copy_command docs/htmlguide/man-html/${name}.html $dir/docs
+
+EOF
+ # Releases have the docs pre-made, but users
+ # may want to rebuild them for some reason.
+ print MAKE <<EOF;
+.PHONY: docs/htmlguide/man-html/${name}.html
+docs/htmlguide/man-html/${name}.html:
+ \$(MAKE) -C docs htmlguide/man-html/${name}.html
+
+EOF
+ push @parcel_deps, "$dir/docs/${name}.html";
+ }
+ elsif ($type eq 'subdir')
+ {
+ print MAKE <<EOF;
+.PHONY: $name-build $name-clean
+
+$name-build:
+ \$(MAKE) -C $name
+
+$name-clean:
+ \$(MAKE) -C $name clean
+EOF
+ push @parcel_deps, "$name-build";
+ push @clean_deps, "$name-clean";
+ }
}
print MAKE <<EOF;
@@ -320,11 +348,28 @@ EOF
}
}
-print MAKE <<__E;
+print MAKE <<EOF;
install:
cat local/install.msg
-__E
+clean: @clean_deps
+ \$(MAKE) -C docs clean
+EOF
+
+if ($build_os eq 'CYGWIN')
+{
+ print MAKE "\tfind release debug -type f | xargs -r rm -f\n";
+}
+else
+{
+ print MAKE "\tfind release debug -type f -exec rm -f {} \\;\n";
+}
+
+for my $parcel (@parcels)
+{
+ print MAKE "\trm -rf ", BoxPlatform::parcel_dir($parcel), "\n";
+ print MAKE "\trm -f ", BoxPlatform::parcel_target($parcel), "\n";
+}
close MAKE;
diff --git a/lib/backupclient/BackupClientFileAttributes.cpp b/lib/backupclient/BackupClientFileAttributes.cpp
index d896a363..af156a1d 100644
--- a/lib/backupclient/BackupClientFileAttributes.cpp
+++ b/lib/backupclient/BackupClientFileAttributes.cpp
@@ -78,6 +78,9 @@ typedef struct
typedef struct
{
int32_t uid, gid, mode;
+ #ifdef WIN32
+ int64_t fileCreationTime;
+ #endif
} attributeHashData;
// Use default packing
@@ -221,12 +224,15 @@ bool BackupClientFileAttributes::operator==(const BackupClientFileAttributes &rA
//
// Function
// Name: BackupClientFileAttributes::Compare(const BackupClientFileAttributes &, bool)
-// Purpose: Compare, optionally ignoring the attribute modification time and/or modification time, and some data which is
-// irrelevant in practise (eg file generation number)
+// Purpose: Compare, optionally ignoring the attribute
+// modification time and/or modification time, and some
+// data which is irrelevant in practise (eg file
+// generation number)
// Created: 10/12/03
//
// --------------------------------------------------------------------------
-bool BackupClientFileAttributes::Compare(const BackupClientFileAttributes &rAttr, bool IgnoreAttrModTime, bool IgnoreModTime) const
+bool BackupClientFileAttributes::Compare(const BackupClientFileAttributes &rAttr,
+ bool IgnoreAttrModTime, bool IgnoreModTime) const
{
EnsureClearAvailable();
rAttr.EnsureClearAvailable();
@@ -234,6 +240,10 @@ bool BackupClientFileAttributes::Compare(const BackupClientFileAttributes &rAttr
// Check sizes are the same, as a first check
if(mpClearAttributes->GetSize() != rAttr.mpClearAttributes->GetSize())
{
+ BOX_TRACE("Attribute Compare: Attributes objects are "
+ "different sizes, cannot compare them: local " <<
+ mpClearAttributes->GetSize() << " bytes, remote " <<
+ rAttr.mpClearAttributes->GetSize() << " bytes");
return false;
}
@@ -241,32 +251,51 @@ bool BackupClientFileAttributes::Compare(const BackupClientFileAttributes &rAttr
// Bytes are checked in network order, but this doesn't matter as we're only checking for equality.
attr_StreamFormat *a1 = (attr_StreamFormat*)mpClearAttributes->GetBuffer();
attr_StreamFormat *a2 = (attr_StreamFormat*)rAttr.mpClearAttributes->GetBuffer();
-
- if(a1->AttributeType != a2->AttributeType
- || a1->UID != a2->UID
- || a1->GID != a2->GID
- || a1->UserDefinedFlags != a2->UserDefinedFlags
- || a1->Mode != a2->Mode)
- {
- return false;
+
+ #define COMPARE(attribute, message) \
+ if (a1->attribute != a2->attribute) \
+ { \
+ BOX_TRACE("Attribute Compare: " << message << " differ: " \
+ "local " << ntoh(a1->attribute) << ", " \
+ "remote " << ntoh(a2->attribute)); \
+ return false; \
}
-
+ COMPARE(AttributeType, "Attribute types");
+ COMPARE(UID, "UIDs");
+ COMPARE(GID, "GIDs");
+ COMPARE(UserDefinedFlags, "User-defined flags");
+ COMPARE(Mode, "Modes");
+
if(!IgnoreModTime)
{
- int t1 = a1->ModificationTime / 1000000;
- int t2 = a2->ModificationTime / 1000000;
- if(t1 != t2)
+ uint64_t t1 = box_ntoh64(a1->ModificationTime);
+ uint64_t t2 = box_ntoh64(a2->ModificationTime);
+ time_t s1 = BoxTimeToSeconds(t1);
+ time_t s2 = BoxTimeToSeconds(t2);
+ if(s1 != s2)
{
+ BOX_TRACE("Attribute Compare: File modification "
+ "times differ: local " <<
+ FormatTime(t1, true) << " (" << s1 << "), "
+ "remote " <<
+ FormatTime(t2, true) << " (" << s2 << ")");
return false;
}
}
-
+
if(!IgnoreAttrModTime)
{
- int t1 = a1->AttrModificationTime / 1000000;
- int t2 = a2->AttrModificationTime / 1000000;
- if(t1 != t2)
+ uint64_t t1 = box_ntoh64(a1->AttrModificationTime);
+ uint64_t t2 = box_ntoh64(a2->AttrModificationTime);
+ time_t s1 = BoxTimeToSeconds(t1);
+ time_t s2 = BoxTimeToSeconds(t2);
+ if(s1 != s2)
{
+ BOX_TRACE("Attribute Compare: Attribute modification "
+ "times differ: local " <<
+ FormatTime(t1, true) << " (" << s1 << "), "
+ "remote " <<
+ FormatTime(t2, true) << " (" << s2 << ")");
return false;
}
}
@@ -276,8 +305,16 @@ bool BackupClientFileAttributes::Compare(const BackupClientFileAttributes &rAttr
if(size > sizeof(attr_StreamFormat))
{
// Symlink strings don't match. This also compares xattrs
- if(::memcmp(a1 + 1, a2 + 1, size - sizeof(attr_StreamFormat)) != 0)
+ int datalen = size - sizeof(attr_StreamFormat);
+
+ if(::memcmp(a1 + 1, a2 + 1, datalen) != 0)
{
+ std::string s1((char *)(a1 + 1), datalen);
+ std::string s2((char *)(a2 + 1), datalen);
+ BOX_TRACE("Attribute Compare: Symbolic link target "
+ "or extended attributes differ: "
+ "local " << PrintEscapedBinaryData(s1) << ", "
+ "remote " << PrintEscapedBinaryData(s2));
return false;
}
}
@@ -292,14 +329,21 @@ bool BackupClientFileAttributes::Compare(const BackupClientFileAttributes &rAttr
// --------------------------------------------------------------------------
//
// Function
-// Name: BackupClientFileAttributes::ReadAttributes(const char *)
-// Purpose: Read the attributes of the file, and store them ready for streaming.
-// Optionally retrieve the modification time and attribute modification time.
+// Name: BackupClientFileAttributes::ReadAttributes(
+// const char *Filename, bool ZeroModificationTimes,
+// box_time_t *pModTime, box_time_t *pAttrModTime,
+// int64_t *pFileSize, InodeRefType *pInodeNumber,
+// bool *pHasMultipleLinks)
+// Purpose: Read the attributes of the file, and store them
+// ready for streaming. Optionally retrieve the
+// modification time and attribute modification time.
// Created: 2003/10/07
//
// --------------------------------------------------------------------------
-void BackupClientFileAttributes::ReadAttributes(const char *Filename, bool ZeroModificationTimes, box_time_t *pModTime,
- box_time_t *pAttrModTime, int64_t *pFileSize, InodeRefType *pInodeNumber, bool *pHasMultipleLinks)
+void BackupClientFileAttributes::ReadAttributes(const char *Filename,
+ bool ZeroModificationTimes, box_time_t *pModTime,
+ box_time_t *pAttrModTime, int64_t *pFileSize,
+ InodeRefType *pInodeNumber, bool *pHasMultipleLinks)
{
StreamableMemBlock *pnewAttr = 0;
try
@@ -603,6 +647,62 @@ void BackupClientFileAttributes::FillExtendedAttr(StreamableMemBlock &outputBloc
#endif
}
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupClientFileAttributes::GetModificationTimes()
+// Purpose: Returns the modification time embedded in the
+// attributes.
+// Created: 2010/02/24
+//
+// --------------------------------------------------------------------------
+void BackupClientFileAttributes::GetModificationTimes(
+ box_time_t *pModificationTime,
+ box_time_t *pAttrModificationTime) const
+{
+ // Got something loaded
+ if(GetSize() <= 0)
+ {
+ THROW_EXCEPTION(BackupStoreException, AttributesNotLoaded);
+ }
+
+ // Make sure there are clear attributes to use
+ EnsureClearAvailable();
+ ASSERT(mpClearAttributes != 0);
+
+ // Check if the decrypted attributes are small enough, and the type of attributes stored
+ if(mpClearAttributes->GetSize() < (int)sizeof(int32_t))
+ {
+ THROW_EXCEPTION(BackupStoreException, AttributesNotUnderstood);
+ }
+ int32_t *type = (int32_t*)mpClearAttributes->GetBuffer();
+ ASSERT(type != 0);
+ if(ntohl(*type) != ATTRIBUTETYPE_GENERIC_UNIX)
+ {
+ // Don't know what to do with these
+ THROW_EXCEPTION(BackupStoreException, AttributesNotUnderstood);
+ }
+
+ // Check there is enough space for an attributes block
+ if(mpClearAttributes->GetSize() < (int)sizeof(attr_StreamFormat))
+ {
+ // Too small
+ THROW_EXCEPTION(BackupStoreException, AttributesNotLoaded);
+ }
+
+ // Get pointer to structure
+ attr_StreamFormat *pattr = (attr_StreamFormat*)mpClearAttributes->GetBuffer();
+
+ if(pModificationTime)
+ {
+ *pModificationTime = box_ntoh64(pattr->ModificationTime);
+ }
+
+ if(pAttrModificationTime)
+ {
+ *pAttrModificationTime = box_ntoh64(pattr->AttrModificationTime);
+ }
+}
// --------------------------------------------------------------------------
//
@@ -1032,14 +1132,18 @@ void BackupClientFileAttributes::SetAttributeHashSecret(const void *pSecret, int
// --------------------------------------------------------------------------
//
// Function
-// Name: BackupClientFileAttributes::GenerateAttributeHash(struct stat &, const std::string &, const std::string &)
-// Purpose: Generate a 64 bit hash from the attributes, used to detect changes.
-// Include filename in the hash, so that it changes from one file to another,
-// so don't reveal identical attributes.
+// Name: BackupClientFileAttributes::GenerateAttributeHash(
+// struct stat &, const std::string &,
+// const std::string &)
+// Purpose: Generate a 64 bit hash from the attributes, used to
+// detect changes. Include filename in the hash, so
+// that it changes from one file to another, so don't
+// reveal identical attributes.
// Created: 25/4/04
//
// --------------------------------------------------------------------------
-uint64_t BackupClientFileAttributes::GenerateAttributeHash(EMU_STRUCT_STAT &st, const std::string &filename, const std::string &leafname)
+uint64_t BackupClientFileAttributes::GenerateAttributeHash(EMU_STRUCT_STAT &st,
+ const std::string &filename, const std::string &leafname)
{
if(sAttributeHashSecretLength == 0)
{
@@ -1054,6 +1158,16 @@ uint64_t BackupClientFileAttributes::GenerateAttributeHash(EMU_STRUCT_STAT &st,
hashData.gid = htonl(st.st_gid);
hashData.mode = htonl(st.st_mode);
+ #ifdef WIN32
+ // On Windows, the "file attribute modification time" is the
+ // file creation time, and we want to back this up, restore
+ // it and compare it.
+ //
+ // On other platforms, it's not very important and can't
+ // reliably be set to anything other than the current time.
+ hashData.fileCreationTime = box_hton64(st.st_ctime);
+ #endif
+
StreamableMemBlock xattr;
FillExtendedAttr(xattr, filename.c_str());
@@ -1062,7 +1176,7 @@ uint64_t BackupClientFileAttributes::GenerateAttributeHash(EMU_STRUCT_STAT &st,
digest.Add(&hashData, sizeof(hashData));
digest.Add(xattr.GetBuffer(), xattr.GetSize());
digest.Add(leafname.c_str(), leafname.size());
- digest.Add(sAttributeHashSecret, sAttributeHashSecretLength);
+ digest.Add(sAttributeHashSecret, sAttributeHashSecretLength);
digest.Finish();
// Return the first 64 bits of the hash
diff --git a/lib/backupclient/BackupClientFileAttributes.h b/lib/backupclient/BackupClientFileAttributes.h
index b32c14dd..f9a0d883 100644
--- a/lib/backupclient/BackupClientFileAttributes.h
+++ b/lib/backupclient/BackupClientFileAttributes.h
@@ -47,7 +47,9 @@ public:
InodeRefType *pInodeNumber = 0, bool *pHasMultipleLinks = 0);
void WriteAttributes(const char *Filename,
bool MakeUserWritable = false) const;
-
+ void GetModificationTimes(box_time_t *pModificationTime,
+ box_time_t *pAttrModificationTime) const;
+
bool IsSymLink() const;
static void SetBlowfishKey(const void *pKey, int KeyLength);
diff --git a/lib/backupclient/BackupStoreException.txt b/lib/backupclient/BackupStoreException.txt
index 50c615b2..528a8c94 100644
--- a/lib/backupclient/BackupStoreException.txt
+++ b/lib/backupclient/BackupStoreException.txt
@@ -68,3 +68,4 @@ SignalReceived 64 A signal was received by the process, restart or terminate
IncompatibleFromAndDiffFiles 65 Attempt to use a diff and a from file together, when they're not related
DiffFromIDNotFoundInDirectory 66 When uploading via a diff, the diff from file must be in the same directory
PatchChainInfoBadInDirectory 67 A directory contains inconsistent information. Run bbstoreaccounts check to fix it.
+UnknownObjectRefCountRequested 68 A reference count was requested for an object whose reference count is not known.
diff --git a/lib/backupclient/Makefile.extra b/lib/backupclient/Makefile.extra
index 925c880e..df3319df 100644
--- a/lib/backupclient/Makefile.extra
+++ b/lib/backupclient/Makefile.extra
@@ -5,12 +5,12 @@ GEN_CMD_SRV = $(MAKEPROTOCOL) Client ../../bin/bbstored/backupprotocol.txt
# AUTOGEN SEEDING
autogen_BackupProtocolClient.cpp autogen_BackupProtocolClient.h: $(MAKEPROTOCOL) ../../bin/bbstored/backupprotocol.txt
- $(PERL) $(GEN_CMD_SRV)
+ $(_PERL) $(GEN_CMD_SRV)
MAKEEXCEPTION = ../../lib/common/makeexception.pl
# AUTOGEN SEEDING
autogen_BackupStoreException.h autogen_BackupStoreException.cpp: $(MAKEEXCEPTION) BackupStoreException.txt
- $(PERL) $(MAKEEXCEPTION) BackupStoreException.txt
+ $(_PERL) $(MAKEEXCEPTION) BackupStoreException.txt
diff --git a/lib/backupstore/BackupStoreAccountDatabase.cpp b/lib/backupstore/BackupStoreAccountDatabase.cpp
index 46cab68f..72a813d5 100644
--- a/lib/backupstore/BackupStoreAccountDatabase.cpp
+++ b/lib/backupstore/BackupStoreAccountDatabase.cpp
@@ -289,7 +289,8 @@ bool BackupStoreAccountDatabase::EntryExists(int32_t ID) const
// Created: 2003/08/21
//
// --------------------------------------------------------------------------
-const BackupStoreAccountDatabase::Entry &BackupStoreAccountDatabase::GetEntry(int32_t ID) const
+BackupStoreAccountDatabase::Entry BackupStoreAccountDatabase::GetEntry(
+ int32_t ID) const
{
// Check that we're using the latest version of the database
CheckUpToDate();
@@ -311,12 +312,14 @@ const BackupStoreAccountDatabase::Entry &BackupStoreAccountDatabase::GetEntry(in
// Created: 2003/08/21
//
// --------------------------------------------------------------------------
-void BackupStoreAccountDatabase::AddEntry(int32_t ID, int DiscSet)
+BackupStoreAccountDatabase::Entry BackupStoreAccountDatabase::AddEntry(
+ int32_t ID, int DiscSet)
{
// Check that we're using the latest version of the database
CheckUpToDate();
pImpl->mDatabase[ID] = Entry(ID, DiscSet);
+ return pImpl->mDatabase[ID];
}
diff --git a/lib/backupstore/BackupStoreAccountDatabase.h b/lib/backupstore/BackupStoreAccountDatabase.h
index 8d6e7ad8..79573242 100644
--- a/lib/backupstore/BackupStoreAccountDatabase.h
+++ b/lib/backupstore/BackupStoreAccountDatabase.h
@@ -55,8 +55,8 @@ public:
};
bool EntryExists(int32_t ID) const;
- const Entry &GetEntry(int32_t ID) const;
- void AddEntry(int32_t ID, int DiscSet);
+ Entry GetEntry(int32_t ID) const;
+ Entry AddEntry(int32_t ID, int DiscSet);
void DeleteEntry(int32_t ID);
// This interface should change in the future. But for now it'll do.
diff --git a/lib/backupstore/BackupStoreAccounts.cpp b/lib/backupstore/BackupStoreAccounts.cpp
index eb10b385..5c7e4d38 100644
--- a/lib/backupstore/BackupStoreAccounts.cpp
+++ b/lib/backupstore/BackupStoreAccounts.cpp
@@ -14,6 +14,7 @@
#include "BoxPortsAndFiles.h"
#include "BackupStoreAccounts.h"
#include "BackupStoreAccountDatabase.h"
+#include "BackupStoreRefCountDatabase.h"
#include "RaidFileWrite.h"
#include "BackupStoreInfo.h"
#include "BackupStoreDirectory.h"
@@ -61,6 +62,10 @@ BackupStoreAccounts::~BackupStoreAccounts()
// --------------------------------------------------------------------------
void BackupStoreAccounts::Create(int32_t ID, int DiscSet, int64_t SizeSoftLimit, int64_t SizeHardLimit, const std::string &rAsUsername)
{
+ // Create the entry in the database
+ BackupStoreAccountDatabase::Entry Entry(mrDatabase.AddEntry(ID,
+ DiscSet));
+
{
// Become the user specified in the config file?
std::auto_ptr<UnixUser> user;
@@ -100,15 +105,17 @@ void BackupStoreAccounts::Create(int32_t ID, int DiscSet, int64_t SizeSoftLimit,
// Save it back
info->Save();
+
+ // Create the refcount database
+ BackupStoreRefCountDatabase::CreateNew(Entry);
+ std::auto_ptr<BackupStoreRefCountDatabase> refcount(
+ BackupStoreRefCountDatabase::Load(Entry, false));
+ refcount->AddReference(BACKUPSTORE_ROOT_DIRECTORY_ID);
}
// As the original user...
-
- // Create the entry in the database
- mrDatabase.AddEntry(ID, DiscSet);
-
// Write the database back
- mrDatabase.Write();
+ mrDatabase.Write();
}
@@ -138,7 +145,7 @@ void BackupStoreAccounts::GetAccountRoot(int32_t ID, std::string &rRootDirOut, i
// Created: 2003/08/21
//
// --------------------------------------------------------------------------
-std::string BackupStoreAccounts::MakeAccountRootDir(int32_t ID, int DiscSet) const
+std::string BackupStoreAccounts::MakeAccountRootDir(int32_t ID, int DiscSet)
{
char accid[64]; // big enough!
::sprintf(accid, "%08x" DIRECTORY_SEPARATOR, ID);
diff --git a/lib/backupstore/BackupStoreAccounts.h b/lib/backupstore/BackupStoreAccounts.h
index 0c3dd103..224d7353 100644
--- a/lib/backupstore/BackupStoreAccounts.h
+++ b/lib/backupstore/BackupStoreAccounts.h
@@ -12,7 +12,7 @@
#include <string>
-class BackupStoreAccountDatabase;
+#include "BackupStoreAccountDatabase.h"
// --------------------------------------------------------------------------
//
@@ -35,9 +35,14 @@ public:
bool AccountExists(int32_t ID);
void GetAccountRoot(int32_t ID, std::string &rRootDirOut, int &rDiscSetOut) const;
+ static std::string GetAccountRoot(const
+ BackupStoreAccountDatabase::Entry &rEntry)
+ {
+ return MakeAccountRootDir(rEntry.GetID(), rEntry.GetDiscSet());
+ }
private:
- std::string MakeAccountRootDir(int32_t ID, int DiscSet) const;
+ static std::string MakeAccountRootDir(int32_t ID, int DiscSet);
private:
BackupStoreAccountDatabase &mrDatabase;
diff --git a/lib/backupstore/BackupStoreRefCountDatabase.cpp b/lib/backupstore/BackupStoreRefCountDatabase.cpp
new file mode 100644
index 00000000..f6db2ca4
--- /dev/null
+++ b/lib/backupstore/BackupStoreRefCountDatabase.cpp
@@ -0,0 +1,321 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: BackupStoreRefCountDatabase.cpp
+// Purpose: Backup store object reference count database storage
+// Created: 2009/06/01
+//
+// --------------------------------------------------------------------------
+
+#include "Box.h"
+
+#include <algorithm>
+
+#include "BackupStoreRefCountDatabase.h"
+#include "BackupStoreException.h"
+#include "BackupStoreAccountDatabase.h"
+#include "BackupStoreAccounts.h"
+#include "RaidFileController.h"
+#include "RaidFileUtil.h"
+#include "RaidFileException.h"
+#include "Utils.h"
+
+#include "MemLeakFindOn.h"
+
+#define REFCOUNT_MAGIC_VALUE 0x52656643 // RefC
+#define REFCOUNT_FILENAME "refcount"
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupStoreRefCountDatabase::BackupStoreRefCountDatabase()
+// Purpose: Default constructor
+// Created: 2003/08/28
+//
+// --------------------------------------------------------------------------
+BackupStoreRefCountDatabase::BackupStoreRefCountDatabase(const
+ BackupStoreAccountDatabase::Entry& rAccount)
+: mAccount(rAccount),
+ mFilename(GetFilename(rAccount)),
+ mReadOnly(true),
+ mIsModified(false)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupStoreRefCountDatabase::~BackupStoreRefCountDatabase
+// Purpose: Destructor
+// Created: 2003/08/28
+//
+// --------------------------------------------------------------------------
+BackupStoreRefCountDatabase::~BackupStoreRefCountDatabase()
+{
+}
+
+std::string BackupStoreRefCountDatabase::GetFilename(const
+ BackupStoreAccountDatabase::Entry& rAccount)
+{
+ std::string RootDir = BackupStoreAccounts::GetAccountRoot(rAccount);
+ ASSERT(RootDir[RootDir.size() - 1] == '/' ||
+ RootDir[RootDir.size() - 1] == DIRECTORY_SEPARATOR_ASCHAR);
+
+ std::string fn(RootDir + "refcount.db");
+ RaidFileController &rcontroller(RaidFileController::GetController());
+ RaidFileDiscSet rdiscSet(rcontroller.GetDiscSet(rAccount.GetDiscSet()));
+ return RaidFileUtil::MakeWriteFileName(rdiscSet, fn);
+}
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupStoreRefCountDatabase::Create(int32_t,
+// const std::string &, int, bool)
+// Purpose: Create a new database, overwriting an existing
+// one only if AllowOverwrite is true.
+// Created: 2003/08/28
+//
+// --------------------------------------------------------------------------
+void BackupStoreRefCountDatabase::Create(const
+ BackupStoreAccountDatabase::Entry& rAccount, bool AllowOverwrite)
+{
+ // Initial header
+ refcount_StreamFormat hdr;
+ hdr.mMagicValue = htonl(REFCOUNT_MAGIC_VALUE);
+ hdr.mAccountID = htonl(rAccount.GetID());
+
+ // Generate the filename
+ std::string Filename = GetFilename(rAccount);
+
+ // Open the file for writing
+ if (FileExists(Filename) && !AllowOverwrite)
+ {
+ BOX_ERROR("Attempted to overwrite refcount database file: " <<
+ Filename);
+ THROW_EXCEPTION(RaidFileException, CannotOverwriteExistingFile);
+ }
+
+ int flags = O_CREAT | O_BINARY | O_RDWR;
+ if (!AllowOverwrite)
+ {
+ flags |= O_EXCL;
+ }
+
+ std::auto_ptr<FileStream> DatabaseFile(new FileStream(Filename, flags));
+
+ // Write header
+ DatabaseFile->Write(&hdr, sizeof(hdr));
+}
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupStoreRefCountDatabase::Load(int32_t AccountID,
+// BackupStoreAccountDatabase& rAccountDatabase,
+// bool ReadOnly);
+// Purpose: Loads the info from disc, given the root
+// information. Can be marked as read only.
+// Created: 2003/08/28
+//
+// --------------------------------------------------------------------------
+std::auto_ptr<BackupStoreRefCountDatabase> BackupStoreRefCountDatabase::Load(
+ const BackupStoreAccountDatabase::Entry& rAccount, bool ReadOnly)
+{
+ // Generate the filename
+ std::string filename = GetFilename(rAccount);
+ int flags = ReadOnly ? O_RDONLY : O_RDWR;
+
+ // Open the file for read/write
+ std::auto_ptr<FileStream> dbfile(new FileStream(filename,
+ flags | O_BINARY));
+
+ // Read in a header
+ refcount_StreamFormat hdr;
+ if(!dbfile->ReadFullBuffer(&hdr, sizeof(hdr), 0 /* not interested in bytes read if this fails */))
+ {
+ THROW_EXCEPTION(BackupStoreException, CouldNotLoadStoreInfo)
+ }
+
+ // Check it
+ if(ntohl(hdr.mMagicValue) != REFCOUNT_MAGIC_VALUE ||
+ (int32_t)ntohl(hdr.mAccountID) != rAccount.GetID())
+ {
+ THROW_EXCEPTION(BackupStoreException, BadStoreInfoOnLoad)
+ }
+
+ // Make new object
+ std::auto_ptr<BackupStoreRefCountDatabase> refcount(new BackupStoreRefCountDatabase(rAccount));
+
+ // Put in basic location info
+ refcount->mReadOnly = ReadOnly;
+ refcount->mapDatabaseFile = dbfile;
+
+ // return it to caller
+ return refcount;
+}
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupStoreRefCountDatabase::Save()
+// Purpose: Save modified info back to disc
+// Created: 2003/08/28
+//
+// --------------------------------------------------------------------------
+/*
+void BackupStoreRefCountDatabase::Save()
+{
+ // Make sure we're initialised (although should never come to this)
+ if(mFilename.empty() || mAccount.GetID() == 0)
+ {
+ THROW_EXCEPTION(BackupStoreException, Internal)
+ }
+
+ // Can we do this?
+ if(mReadOnly)
+ {
+ THROW_EXCEPTION(BackupStoreException, StoreInfoIsReadOnly)
+ }
+
+ // Then... open a write file
+ RaidFileWrite rf(mAccount.GetDiscSet(), mFilename);
+ rf.Open(true); // allow overwriting
+
+ // Make header
+ info_StreamFormat hdr;
+ hdr.mMagicValue = htonl(INFO_MAGIC_VALUE);
+ hdr.mAccountID = htonl(mAccountID);
+ hdr.mClientStoreMarker = box_hton64(mClientStoreMarker);
+ hdr.mLastObjectIDUsed = box_hton64(mLastObjectIDUsed);
+ hdr.mBlocksUsed = box_hton64(mBlocksUsed);
+ hdr.mBlocksInOldFiles = box_hton64(mBlocksInOldFiles);
+ hdr.mBlocksInDeletedFiles = box_hton64(mBlocksInDeletedFiles);
+ hdr.mBlocksInDirectories = box_hton64(mBlocksInDirectories);
+ hdr.mBlocksSoftLimit = box_hton64(mBlocksSoftLimit);
+ hdr.mBlocksHardLimit = box_hton64(mBlocksHardLimit);
+ hdr.mCurrentMarkNumber = 0;
+ hdr.mOptionsPresent = 0;
+ hdr.mNumberDeletedDirectories = box_hton64(mDeletedDirectories.size());
+
+ // Write header
+ rf.Write(&hdr, sizeof(hdr));
+
+ // Write the deleted object list
+ if(mDeletedDirectories.size() > 0)
+ {
+ int64_t objs[NUM_DELETED_DIRS_BLOCK];
+
+ int tosave = mDeletedDirectories.size();
+ std::vector<int64_t>::iterator i(mDeletedDirectories.begin());
+ while(tosave > 0)
+ {
+ // How many in this one?
+ int b = (tosave > NUM_DELETED_DIRS_BLOCK)?NUM_DELETED_DIRS_BLOCK:((int)(tosave));
+
+ // Add them
+ for(int t = 0; t < b; ++t)
+ {
+ ASSERT(i != mDeletedDirectories.end());
+ objs[t] = box_hton64((*i));
+ i++;
+ }
+
+ // Write
+ rf.Write(objs, b * sizeof(int64_t));
+
+ // Number saved
+ tosave -= b;
+ }
+ }
+
+ // Commit it to disc, converting it to RAID now
+ rf.Commit(true);
+
+ // Mark is as not modified
+ mIsModified = false;
+}
+*/
+
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupStoreRefCountDatabase::GetRefCount(int64_t
+// ObjectID)
+// Purpose: Get the number of references to the specified object
+// out of the database
+// Created: 2009/06/01
+//
+// --------------------------------------------------------------------------
+BackupStoreRefCountDatabase::refcount_t
+BackupStoreRefCountDatabase::GetRefCount(int64_t ObjectID) const
+{
+ IOStream::pos_type offset = GetOffset(ObjectID);
+
+ if (GetSize() < offset + GetEntrySize())
+ {
+ BOX_ERROR("attempted read of unknown refcount for object " <<
+ BOX_FORMAT_OBJECTID(ObjectID));
+ THROW_EXCEPTION(BackupStoreException,
+ UnknownObjectRefCountRequested);
+ }
+
+ mapDatabaseFile->Seek(offset, SEEK_SET);
+
+ refcount_t refcount;
+ if (mapDatabaseFile->Read(&refcount, sizeof(refcount)) !=
+ sizeof(refcount))
+ {
+ BOX_LOG_SYS_ERROR("short read on refcount database: " <<
+ mFilename);
+ THROW_EXCEPTION(BackupStoreException, CouldNotLoadStoreInfo);
+ }
+
+ return ntohl(refcount);
+}
+
+int64_t BackupStoreRefCountDatabase::GetLastObjectIDUsed() const
+{
+ return (GetSize() - sizeof(refcount_StreamFormat)) /
+ sizeof(refcount_t);
+}
+
+void BackupStoreRefCountDatabase::AddReference(int64_t ObjectID)
+{
+ refcount_t refcount;
+
+ if (ObjectID > GetLastObjectIDUsed())
+ {
+ // new object, assume no previous references
+ refcount = 0;
+ }
+ else
+ {
+ // read previous value from database
+ refcount = GetRefCount(ObjectID);
+ }
+
+ refcount++;
+
+ SetRefCount(ObjectID, refcount);
+}
+
+void BackupStoreRefCountDatabase::SetRefCount(int64_t ObjectID,
+ refcount_t NewRefCount)
+{
+ IOStream::pos_type offset = GetOffset(ObjectID);
+ mapDatabaseFile->Seek(offset, SEEK_SET);
+ refcount_t RefCountNetOrder = htonl(NewRefCount);
+ mapDatabaseFile->Write(&RefCountNetOrder, sizeof(RefCountNetOrder));
+}
+
+bool BackupStoreRefCountDatabase::RemoveReference(int64_t ObjectID)
+{
+ refcount_t refcount = GetRefCount(ObjectID); // must exist in database
+ ASSERT(refcount > 0);
+ refcount--;
+ SetRefCount(ObjectID, refcount);
+ return (refcount > 0);
+}
+
diff --git a/lib/backupstore/BackupStoreRefCountDatabase.h b/lib/backupstore/BackupStoreRefCountDatabase.h
new file mode 100644
index 00000000..93c79afb
--- /dev/null
+++ b/lib/backupstore/BackupStoreRefCountDatabase.h
@@ -0,0 +1,128 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: BackupStoreRefCountDatabase.h
+// Purpose: Main backup store information storage
+// Created: 2003/08/28
+//
+// --------------------------------------------------------------------------
+
+#ifndef BACKUPSTOREREFCOUNTDATABASE__H
+#define BACKUPSTOREREFCOUNTDATABASE__H
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "BackupStoreAccountDatabase.h"
+#include "FileStream.h"
+
+class BackupStoreCheck;
+class BackupStoreContext;
+
+// set packing to one byte
+#ifdef STRUCTURE_PACKING_FOR_WIRE_USE_HEADERS
+#include "BeginStructPackForWire.h"
+#else
+BEGIN_STRUCTURE_PACKING_FOR_WIRE
+#endif
+
+typedef struct
+{
+ uint32_t mMagicValue; // also the version number
+ uint32_t mAccountID;
+} refcount_StreamFormat;
+
+// Use default packing
+#ifdef STRUCTURE_PACKING_FOR_WIRE_USE_HEADERS
+#include "EndStructPackForWire.h"
+#else
+END_STRUCTURE_PACKING_FOR_WIRE
+#endif
+
+// --------------------------------------------------------------------------
+//
+// Class
+// Name: BackupStoreRefCountDatabase
+// Purpose: Backup store reference count database storage
+// Created: 2009/06/01
+//
+// --------------------------------------------------------------------------
+class BackupStoreRefCountDatabase
+{
+ friend class BackupStoreCheck;
+ friend class BackupStoreContext;
+ friend class HousekeepStoreAccount;
+
+public:
+ ~BackupStoreRefCountDatabase();
+private:
+ // Creation through static functions only
+ BackupStoreRefCountDatabase(const BackupStoreAccountDatabase::Entry&
+ rAccount);
+ // No copying allowed
+ BackupStoreRefCountDatabase(const BackupStoreRefCountDatabase &);
+
+public:
+ // Create a new database for a new account. This method will refuse
+ // to overwrite any existing file.
+ static void CreateNew(const BackupStoreAccountDatabase::Entry& rAccount)
+ {
+ Create(rAccount, false);
+ }
+
+ // Load it from the store
+ static std::auto_ptr<BackupStoreRefCountDatabase> Load(const
+ BackupStoreAccountDatabase::Entry& rAccount, bool ReadOnly);
+
+ typedef uint32_t refcount_t;
+
+ // Data access functions
+ refcount_t GetRefCount(int64_t ObjectID) const;
+ int64_t GetLastObjectIDUsed() const;
+
+ // Data modification functions
+ void AddReference(int64_t ObjectID);
+ // RemoveReference returns false if refcount drops to zero
+ bool RemoveReference(int64_t ObjectID);
+
+private:
+ // Create a new database for an existing account. Used during
+ // account checking if opening the old database throws an exception.
+ // This method will overwrite any existing file.
+ static void CreateForRegeneration(const
+ BackupStoreAccountDatabase::Entry& rAccount)
+ {
+ Create(rAccount, true);
+ }
+
+ static void Create(const BackupStoreAccountDatabase::Entry& rAccount,
+ bool AllowOverwrite);
+
+ static std::string GetFilename(const BackupStoreAccountDatabase::Entry&
+ rAccount);
+ IOStream::pos_type GetSize() const
+ {
+ return mapDatabaseFile->GetPosition() +
+ mapDatabaseFile->BytesLeftToRead();
+ }
+ IOStream::pos_type GetEntrySize() const
+ {
+ return sizeof(refcount_t);
+ }
+ IOStream::pos_type GetOffset(int64_t ObjectID) const
+ {
+ return ((ObjectID - 1) * GetEntrySize()) +
+ sizeof(refcount_StreamFormat);
+ }
+ void SetRefCount(int64_t ObjectID, refcount_t NewRefCount);
+
+ // Location information
+ BackupStoreAccountDatabase::Entry mAccount;
+ std::string mFilename;
+ bool mReadOnly;
+ bool mIsModified;
+ std::auto_ptr<FileStream> mapDatabaseFile;
+};
+
+#endif // BACKUPSTOREREFCOUNTDATABASE__H
diff --git a/lib/common/BannerText.h b/lib/common/BannerText.h
index c25ac433..e40224da 100644
--- a/lib/common/BannerText.h
+++ b/lib/common/BannerText.h
@@ -12,7 +12,7 @@
#define BANNER_TEXT(UtilityName) \
"Box " UtilityName " v" BOX_VERSION ", (c) Ben Summers and " \
- "contributors 2003-2008"
+ "contributors 2003-2010"
#endif // BANNERTEXT__H
diff --git a/lib/common/Box.h b/lib/common/Box.h
index 1124a062..158fab7b 100644
--- a/lib/common/Box.h
+++ b/lib/common/Box.h
@@ -103,19 +103,28 @@
#define THROW_EXCEPTION(type, subtype) \
{ \
- OPTIONAL_DO_BACKTRACE \
- BOX_WARNING("Exception thrown: " #type "(" #subtype ") " \
- "at " __FILE__ "(" << __LINE__ << ")") \
+ if(!HideExceptionMessageGuard::ExceptionsHidden()) \
+ { \
+ OPTIONAL_DO_BACKTRACE \
+ BOX_WARNING("Exception thrown: " \
+ #type "(" #subtype ") " \
+ "at " __FILE__ "(" << __LINE__ << ")") \
+ } \
throw type(type::subtype); \
}
#define THROW_EXCEPTION_MESSAGE(type, subtype, message) \
{ \
- OPTIONAL_DO_BACKTRACE \
- BOX_WARNING("Exception thrown: " #type "(" #subtype ") " \
- " (" message ") at " \
- __FILE__ "(" << __LINE__ << ")") \
- throw type(type::subtype, message); \
+ std::ostringstream _box_throw_line; \
+ _box_throw_line << message; \
+ if(!HideExceptionMessageGuard::ExceptionsHidden()) \
+ { \
+ OPTIONAL_DO_BACKTRACE \
+ BOX_WARNING("Exception thrown: " \
+ #type "(" #subtype ") (" << message << \
+ ") at " __FILE__ "(" << __LINE__ << ")") \
+ } \
+ throw type(type::subtype, _box_throw_line.str()); \
}
// extra macros for converting to network byte order
@@ -154,5 +163,23 @@ inline uint64_t box_swap64(uint64_t x)
#define box_ntoh64(x) box_swap64(x)
#endif
+// overloaded auto-conversion functions
+inline uint64_t hton(uint64_t in) { return box_hton64(in); }
+inline uint32_t hton(uint32_t in) { return htonl(in); }
+inline uint16_t hton(uint16_t in) { return htons(in); }
+inline uint8_t hton(uint8_t in) { return in; }
+inline int64_t hton(int64_t in) { return box_hton64(in); }
+inline int32_t hton(int32_t in) { return htonl(in); }
+inline int16_t hton(int16_t in) { return htons(in); }
+inline int8_t hton(int8_t in) { return in; }
+inline uint64_t ntoh(uint64_t in) { return box_ntoh64(in); }
+inline uint32_t ntoh(uint32_t in) { return ntohl(in); }
+inline uint16_t ntoh(uint16_t in) { return ntohs(in); }
+inline uint8_t ntoh(uint8_t in) { return in; }
+inline int64_t ntoh(int64_t in) { return box_ntoh64(in); }
+inline int32_t ntoh(int32_t in) { return ntohl(in); }
+inline int16_t ntoh(int16_t in) { return ntohs(in); }
+inline int8_t ntoh(int8_t in) { return in; }
+
#endif // BOX__H
diff --git a/lib/common/BoxPlatform.h b/lib/common/BoxPlatform.h
index c625a7c7..617aa031 100644
--- a/lib/common/BoxPlatform.h
+++ b/lib/common/BoxPlatform.h
@@ -176,6 +176,14 @@
#include "emu.h"
+#ifdef WIN32
+ #define INVALID_FILE INVALID_HANDLE_VALUE
+ typedef HANDLE tOSFileHandle;
+#else
+ #define INVALID_FILE -1
+ typedef int tOSFileHandle;
+#endif
+
// Solaris has no dirfd(x) macro or function, and we need one for
// intercept tests. We cannot define macros with arguments directly
// using AC_DEFINE, so do it here instead of in configure.ac.
diff --git a/lib/common/BoxPortsAndFiles.h.in b/lib/common/BoxPortsAndFiles.h.in
index e30dcf90..41bad0ba 100644
--- a/lib/common/BoxPortsAndFiles.h.in
+++ b/lib/common/BoxPortsAndFiles.h.in
@@ -15,6 +15,7 @@
// Backup store daemon
#define BOX_PORT_BBSTORED (BOX_PORT_BASE+1)
+#define BOX_PORT_BBSTORED_TEST 22011
// directory within the RAIDFILE root for the backup store daemon
#define BOX_RAIDFILE_ROOT_BBSTORED "backup"
diff --git a/lib/common/FileModificationTime.cpp b/lib/common/FileModificationTime.cpp
new file mode 100644
index 00000000..1109b15f
--- /dev/null
+++ b/lib/common/FileModificationTime.cpp
@@ -0,0 +1,64 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: FileModificationTime.cpp
+// Purpose: Function for getting file modification time.
+// Created: 2010/02/15
+//
+// --------------------------------------------------------------------------
+
+#include "Box.h"
+
+#include <sys/stat.h>
+
+#include "BoxTime.h"
+#include "FileModificationTime.h"
+
+#include "MemLeakFindOn.h"
+
+box_time_t FileModificationTime(EMU_STRUCT_STAT &st)
+{
+#ifndef HAVE_STRUCT_STAT_ST_MTIMESPEC
+ box_time_t datamodified = ((int64_t)st.st_mtime) * (MICRO_SEC_IN_SEC_LL);
+#else
+ box_time_t datamodified = (((int64_t)st.st_mtimespec.tv_nsec) / NANO_SEC_IN_USEC_LL)
+ + (((int64_t)st.st_mtimespec.tv_sec) * (MICRO_SEC_IN_SEC_LL));
+#endif
+
+ return datamodified;
+}
+
+box_time_t FileAttrModificationTime(EMU_STRUCT_STAT &st)
+{
+ box_time_t statusmodified =
+#ifdef HAVE_STRUCT_STAT_ST_MTIMESPEC
+ (((int64_t)st.st_ctimespec.tv_nsec) / (NANO_SEC_IN_USEC_LL)) +
+ (((int64_t)st.st_ctimespec.tv_sec) * (MICRO_SEC_IN_SEC_LL));
+#elif defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
+ (((int64_t)st.st_ctim.tv_nsec) / (NANO_SEC_IN_USEC_LL)) +
+ (((int64_t)st.st_ctim.tv_sec) * (MICRO_SEC_IN_SEC_LL));
+#elif defined HAVE_STRUCT_STAT_ST_ATIMENSEC
+ (((int64_t)st.st_ctimensec) / (NANO_SEC_IN_USEC_LL)) +
+ (((int64_t)st.st_ctime) * (MICRO_SEC_IN_SEC_LL));
+#else // no nanoseconds anywhere
+ (((int64_t)st.st_ctime) * (MICRO_SEC_IN_SEC_LL));
+#endif
+
+ return statusmodified;
+}
+
+box_time_t FileModificationTimeMaxModAndAttr(EMU_STRUCT_STAT &st)
+{
+#ifndef HAVE_STRUCT_STAT_ST_MTIMESPEC
+ box_time_t datamodified = ((int64_t)st.st_mtime) * (MICRO_SEC_IN_SEC_LL);
+ box_time_t statusmodified = ((int64_t)st.st_ctime) * (MICRO_SEC_IN_SEC_LL);
+#else
+ box_time_t datamodified = (((int64_t)st.st_mtimespec.tv_nsec) / NANO_SEC_IN_USEC_LL)
+ + (((int64_t)st.st_mtimespec.tv_sec) * (MICRO_SEC_IN_SEC_LL));
+ box_time_t statusmodified = (((int64_t)st.st_ctimespec.tv_nsec) / NANO_SEC_IN_USEC_LL)
+ + (((int64_t)st.st_ctimespec.tv_sec) * (MICRO_SEC_IN_SEC_LL));
+#endif
+
+ return (datamodified > statusmodified)?datamodified:statusmodified;
+}
+
diff --git a/lib/common/FileModificationTime.h b/lib/common/FileModificationTime.h
index 5f13c015..e6e6c172 100644
--- a/lib/common/FileModificationTime.h
+++ b/lib/common/FileModificationTime.h
@@ -14,51 +14,9 @@
#include "BoxTime.h"
-inline box_time_t FileModificationTime(EMU_STRUCT_STAT &st)
-{
-#ifndef HAVE_STRUCT_STAT_ST_MTIMESPEC
- box_time_t datamodified = ((int64_t)st.st_mtime) * (MICRO_SEC_IN_SEC_LL);
-#else
- box_time_t datamodified = (((int64_t)st.st_mtimespec.tv_nsec) / NANO_SEC_IN_USEC_LL)
- + (((int64_t)st.st_mtimespec.tv_sec) * (MICRO_SEC_IN_SEC_LL));
-#endif
-
- return datamodified;
-}
-
-inline box_time_t FileAttrModificationTime(EMU_STRUCT_STAT &st)
-{
- box_time_t statusmodified =
-#ifdef HAVE_STRUCT_STAT_ST_MTIMESPEC
- (((int64_t)st.st_ctimespec.tv_nsec) / (NANO_SEC_IN_USEC_LL)) +
- (((int64_t)st.st_ctimespec.tv_sec) * (MICRO_SEC_IN_SEC_LL));
-#elif defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
- (((int64_t)st.st_ctim.tv_nsec) / (NANO_SEC_IN_USEC_LL)) +
- (((int64_t)st.st_ctim.tv_sec) * (MICRO_SEC_IN_SEC_LL));
-#elif defined HAVE_STRUCT_STAT_ST_ATIMENSEC
- (((int64_t)st.st_ctimensec) / (NANO_SEC_IN_USEC_LL)) +
- (((int64_t)st.st_ctime) * (MICRO_SEC_IN_SEC_LL));
-#else // no nanoseconds anywhere
- (((int64_t)st.st_ctime) * (MICRO_SEC_IN_SEC_LL));
-#endif
-
- return statusmodified;
-}
-
-inline box_time_t FileModificationTimeMaxModAndAttr(EMU_STRUCT_STAT &st)
-{
-#ifndef HAVE_STRUCT_STAT_ST_MTIMESPEC
- box_time_t datamodified = ((int64_t)st.st_mtime) * (MICRO_SEC_IN_SEC_LL);
- box_time_t statusmodified = ((int64_t)st.st_ctime) * (MICRO_SEC_IN_SEC_LL);
-#else
- box_time_t datamodified = (((int64_t)st.st_mtimespec.tv_nsec) / NANO_SEC_IN_USEC_LL)
- + (((int64_t)st.st_mtimespec.tv_sec) * (MICRO_SEC_IN_SEC_LL));
- box_time_t statusmodified = (((int64_t)st.st_ctimespec.tv_nsec) / NANO_SEC_IN_USEC_LL)
- + (((int64_t)st.st_ctimespec.tv_sec) * (MICRO_SEC_IN_SEC_LL));
-#endif
-
- return (datamodified > statusmodified)?datamodified:statusmodified;
-}
+box_time_t FileModificationTime(EMU_STRUCT_STAT &st);
+box_time_t FileAttrModificationTime(EMU_STRUCT_STAT &st);
+box_time_t FileModificationTimeMaxModAndAttr(EMU_STRUCT_STAT &st);
#endif // FILEMODIFICATIONTIME__H
diff --git a/lib/common/FileStream.cpp b/lib/common/FileStream.cpp
index d6a3c5da..5be8237c 100644
--- a/lib/common/FileStream.cpp
+++ b/lib/common/FileStream.cpp
@@ -67,19 +67,20 @@ void FileStream::AfterOpen()
{
MEMLEAKFINDER_NOT_A_LEAK(this);
+ #ifdef WIN32
+ BOX_LOG_WIN_WARNING_NUMBER("Failed to open file: " <<
+ mFileName, winerrno);
+ #else
+ BOX_LOG_SYS_WARNING("Failed to open file: " <<
+ mFileName);
+ #endif
+
if(errno == EACCES)
{
THROW_EXCEPTION(CommonException, AccessDenied)
}
else
{
- #ifdef WIN32
- BOX_LOG_WIN_WARNING_NUMBER("Failed to open file: " <<
- mFileName, winerrno);
- #else
- BOX_LOG_SYS_WARNING("Failed to open file: " <<
- mFileName);
- #endif
THROW_EXCEPTION(CommonException, OSFileOpenError)
}
}
diff --git a/lib/common/FileStream.h b/lib/common/FileStream.h
index 7c4118cd..9101a968 100644
--- a/lib/common/FileStream.h
+++ b/lib/common/FileStream.h
@@ -20,14 +20,6 @@
#include <unistd.h>
#endif
-#ifdef WIN32
- #define INVALID_FILE INVALID_HANDLE_VALUE
- typedef HANDLE tOSFileHandle;
-#else
- #define INVALID_FILE -1
- typedef int tOSFileHandle;
-#endif
-
class FileStream : public IOStream
{
public:
diff --git a/lib/common/InvisibleTempFileStream.cpp b/lib/common/InvisibleTempFileStream.cpp
index a7e19ad3..abfcb5f6 100644
--- a/lib/common/InvisibleTempFileStream.cpp
+++ b/lib/common/InvisibleTempFileStream.cpp
@@ -24,9 +24,9 @@
// --------------------------------------------------------------------------
InvisibleTempFileStream::InvisibleTempFileStream(const char *Filename, int flags, int mode)
#ifdef WIN32
- : FileStream(::openfile(Filename, flags | O_TEMPORARY, mode))
+ : FileStream(Filename, flags | O_TEMPORARY, mode)
#else
- : FileStream(::open(Filename, flags, mode))
+ : FileStream(Filename, flags, mode)
#endif
{
#ifndef WIN32
diff --git a/lib/common/Logging.cpp b/lib/common/Logging.cpp
index 1666b487..296443ea 100644
--- a/lib/common/Logging.cpp
+++ b/lib/common/Logging.cpp
@@ -33,6 +33,8 @@ bool Logging::sLogToSyslog = false;
bool Logging::sLogToConsole = false;
bool Logging::sContextSet = false;
+bool HideExceptionMessageGuard::sHiddenState = false;
+
std::vector<Logger*> Logging::sLoggers;
std::string Logging::sContext;
Console* Logging::spConsole = NULL;
@@ -493,3 +495,24 @@ bool FileLogger::Log(Log::Level Level, const std::string& rFile,
Logging::Add(this);
return true;
}
+
+std::string PrintEscapedBinaryData(const std::string& rInput)
+{
+ std::ostringstream output;
+
+ for (size_t i = 0; i < rInput.length(); i++)
+ {
+ if (isprint(rInput[i]))
+ {
+ output << rInput[i];
+ }
+ else
+ {
+ output << "\\x" << std::hex << std::setw(2) <<
+ std::setfill('0') << (int) rInput[i] <<
+ std::dec;
+ }
+ }
+
+ return output.str();
+}
diff --git a/lib/common/Logging.h b/lib/common/Logging.h
index 9bb2cf6c..24863d2c 100644
--- a/lib/common/Logging.h
+++ b/lib/common/Logging.h
@@ -18,17 +18,6 @@
#include "FileStream.h"
-/*
-#define BOX_LOG(level, stuff) \
-{ \
- if(Log::sMaxLoggingLevelForAnyOutput >= level) \
- std::ostringstream line; \
- line << stuff; \
- Log::Write(level, __FILE__, __LINE__, line.str()); \
- } \
-}
-*/
-
#define BOX_LOG(level, stuff) \
{ \
std::ostringstream _box_log_line; \
@@ -52,12 +41,20 @@
if (Logging::IsEnabled(Log::TRACE)) \
{ BOX_LOG(Log::TRACE, stuff) }
+#define BOX_SYS_ERROR(stuff) \
+ stuff << ": " << std::strerror(errno) << " (" << errno << ")"
+
#define BOX_LOG_SYS_WARNING(stuff) \
- BOX_WARNING(stuff << ": " << std::strerror(errno) << " (" << errno << ")")
+ BOX_WARNING(BOX_SYS_ERROR(stuff))
#define BOX_LOG_SYS_ERROR(stuff) \
- BOX_ERROR(stuff << ": " << std::strerror(errno) << " (" << errno << ")")
+ BOX_ERROR(BOX_SYS_ERROR(stuff))
#define BOX_LOG_SYS_FATAL(stuff) \
- BOX_FATAL(stuff << ": " << std::strerror(errno) << " (" << errno << ")")
+ BOX_FATAL(BOX_SYS_ERROR(stuff))
+
+#define LOG_AND_THROW_ERROR(message, filename, exception, subtype) \
+ BOX_LOG_SYS_ERROR(message << ": " << filename); \
+ THROW_EXCEPTION_MESSAGE(exception, subtype, \
+ BOX_SYS_ERROR(message << ": " << filename));
inline std::string GetNativeErrorMessage()
{
@@ -320,4 +317,25 @@ class FileLogger : public Logger
virtual void SetProgramName(const std::string& rProgramName) { }
};
+class HideExceptionMessageGuard
+{
+ public:
+ HideExceptionMessageGuard()
+ {
+ mOldHiddenState = sHiddenState;
+ sHiddenState = true;
+ }
+ ~HideExceptionMessageGuard()
+ {
+ sHiddenState = mOldHiddenState;
+ }
+ static bool ExceptionsHidden() { return sHiddenState; }
+
+ private:
+ static bool sHiddenState;
+ bool mOldHiddenState;
+};
+
+std::string PrintEscapedBinaryData(const std::string& rInput);
+
#endif // LOGGING__H
diff --git a/lib/common/Makefile.extra b/lib/common/Makefile.extra
index 04dd8e71..cc3f3a7a 100644
--- a/lib/common/Makefile.extra
+++ b/lib/common/Makefile.extra
@@ -3,9 +3,9 @@ MAKEEXCEPTION = ../../lib/common/makeexception.pl
# AUTOGEN SEEDING
autogen_CommonException.h autogen_CommonException.cpp: $(MAKEEXCEPTION) CommonException.txt
- $(PERL) $(MAKEEXCEPTION) CommonException.txt
+ $(_PERL) $(MAKEEXCEPTION) CommonException.txt
# AUTOGEN SEEDING
autogen_ConversionException.h autogen_ConversionException.cpp: $(MAKEEXCEPTION) ConversionException.txt
- $(PERL) $(MAKEEXCEPTION) ConversionException.txt
+ $(_PERL) $(MAKEEXCEPTION) ConversionException.txt
diff --git a/lib/common/NamedLock.cpp b/lib/common/NamedLock.cpp
index b3d0009b..f96f80b5 100644
--- a/lib/common/NamedLock.cpp
+++ b/lib/common/NamedLock.cpp
@@ -65,7 +65,7 @@ NamedLock::~NamedLock()
// Created: 2003/08/28
//
// --------------------------------------------------------------------------
-bool NamedLock::TryAndGetLock(const char *Filename, int mode)
+bool NamedLock::TryAndGetLock(const std::string& rFilename, int mode)
{
// Check
if(mFileDescriptor != -1)
@@ -75,7 +75,8 @@ bool NamedLock::TryAndGetLock(const char *Filename, int mode)
// See if the lock can be got
#if HAVE_DECL_O_EXLOCK
- int fd = ::open(Filename, O_WRONLY | O_NONBLOCK | O_CREAT | O_TRUNC | O_EXLOCK, mode);
+ int fd = ::open(rFilename.c_str(),
+ O_WRONLY | O_NONBLOCK | O_CREAT | O_TRUNC | O_EXLOCK, mode);
if(fd != -1)
{
// Got a lock, lovely
@@ -92,10 +93,10 @@ bool NamedLock::TryAndGetLock(const char *Filename, int mode)
return false;
#else
- int fd = ::open(Filename, O_WRONLY | O_CREAT | O_TRUNC, mode);
+ int fd = ::open(rFilename.c_str(), O_WRONLY | O_CREAT | O_TRUNC, mode);
if(fd == -1)
{
- BOX_WARNING("Failed to open lockfile: " << Filename);
+ BOX_WARNING("Failed to open lockfile: " << rFilename);
THROW_EXCEPTION(CommonException, OSFileError)
}
diff --git a/lib/common/NamedLock.h b/lib/common/NamedLock.h
index 5eac712a..534115db 100644
--- a/lib/common/NamedLock.h
+++ b/lib/common/NamedLock.h
@@ -28,7 +28,7 @@ private:
NamedLock(const NamedLock &);
public:
- bool TryAndGetLock(const char *Filename, int mode = 0755);
+ bool TryAndGetLock(const std::string& rFilename, int mode = 0755);
bool GotLock() {return mFileDescriptor != -1;}
void ReleaseLock();
diff --git a/lib/common/Test.cpp b/lib/common/Test.cpp
index e903f41e..56638058 100644
--- a/lib/common/Test.cpp
+++ b/lib/common/Test.cpp
@@ -416,7 +416,7 @@ void terminate_bbackupd(int pid)
// Wait a given number of seconds for something to complete
-void wait_for_operation(int seconds, char* message)
+void wait_for_operation(int seconds, const char* message)
{
if (Logging::GetGlobalLevel() >= Log::TRACE)
{
@@ -462,10 +462,24 @@ void safe_sleep(int seconds)
ts.tv_nsec = 0;
while (nanosleep(&ts, &ts) == -1 && errno == EINTR)
{
- BOX_TRACE("safe_sleep interrupted with " <<
- ts.tv_sec << "." << ts.tv_nsec <<
- " secs remaining, sleeping again");
- /* sleep again */
+ // FIXME evil hack for OSX, where ts.tv_sec contains
+ // a negative number interpreted as unsigned 32-bit
+ // when nanosleep() returns later than expected.
+
+ int32_t secs = (int32_t) ts.tv_sec;
+ int64_t remain_ns = (secs * 1000000000) + ts.tv_nsec;
+
+ if (remain_ns < 0)
+ {
+ BOX_WARNING("nanosleep interrupted " <<
+ ((float)(0 - remain_ns) / 1000000000) <<
+ " secs late");
+ return;
+ }
+
+ BOX_TRACE("nanosleep interrupted with " <<
+ (remain_ns / 1000000000) << " secs remaining, "
+ "sleeping again");
}
#endif
}
diff --git a/lib/common/Test.h b/lib/common/Test.h
index 362b43af..08ba4542 100644
--- a/lib/common/Test.h
+++ b/lib/common/Test.h
@@ -18,14 +18,14 @@
#define BBSTORED "..\\..\\bin\\bbstored\\bbstored.exe"
#define BBACKUPQUERY "..\\..\\bin\\bbackupquery\\bbackupquery.exe"
#define BBSTOREACCOUNTS "..\\..\\bin\\bbstoreaccounts\\bbstoreaccounts.exe"
-#define TEST_RETURN(actual, expected) TEST_THAT(actual == expected);
+#define TEST_RETURN(actual, expected) TEST_EQUAL(expected, actual);
#else
#define BBACKUPCTL "../../bin/bbackupctl/bbackupctl"
#define BBACKUPD "../../bin/bbackupd/bbackupd"
#define BBSTORED "../../bin/bbstored/bbstored"
#define BBACKUPQUERY "../../bin/bbackupquery/bbackupquery"
#define BBSTOREACCOUNTS "../../bin/bbstoreaccounts/bbstoreaccounts"
-#define TEST_RETURN(actual, expected) TEST_THAT(actual == expected*256);
+#define TEST_RETURN(actual, expected) TEST_EQUAL((expected << 8), actual);
#endif
extern int failures;
@@ -54,6 +54,7 @@ extern std::string bbackupd_args, bbstored_args, bbackupquery_args, test_args;
#define TEST_CHECK_THROWS(statement, excepttype, subtype) \
{ \
bool didthrow = false; \
+ HideExceptionMessageGuard hide; \
try \
{ \
statement; \
@@ -90,8 +91,8 @@ extern std::string bbackupd_args, bbstored_args, bbackupquery_args, test_args;
\
if(_exp_str != _found_str) \
{ \
- printf("Expected <%s> but found <%s>\n", \
- _exp_str.c_str(), _found_str.c_str()); \
+ BOX_WARNING("Expected <" << _exp_str << "> but found <" << \
+ _found_str << ">"); \
\
std::ostringstream _oss3; \
_oss3 << #_found << " != " << #_expected; \
@@ -113,7 +114,9 @@ extern std::string bbackupd_args, bbstored_args, bbackupquery_args, test_args;
\
if(_exp_str != _found_str) \
{ \
- std::string _line_str = _line; \
+ std::ostringstream _ossl; \
+ _ossl << _line; \
+ std::string _line_str = _ossl.str(); \
printf("Expected <%s> but found <%s> in <%s>\n", \
_exp_str.c_str(), _found_str.c_str(), _line_str.c_str()); \
\
@@ -158,7 +161,7 @@ void sync_and_wait();
void terminate_bbackupd(int pid);
// Wait a given number of seconds for something to complete
-void wait_for_operation(int seconds, char* message);
+void wait_for_operation(int seconds, const char* message);
void safe_sleep(int seconds);
#endif // TEST__H
diff --git a/lib/common/Utils.cpp b/lib/common/Utils.cpp
index f45ed26b..6f21330d 100644
--- a/lib/common/Utils.cpp
+++ b/lib/common/Utils.cpp
@@ -30,6 +30,11 @@
#include "MemLeakFindOn.h"
+std::string GetBoxBackupVersion()
+{
+ return BOX_VERSION;
+}
+
// --------------------------------------------------------------------------
//
// Function
@@ -156,15 +161,16 @@ void DumpStackBacktrace()
// --------------------------------------------------------------------------
//
// Function
-// Name: FileExists(const char *)
+// Name: FileExists(const std::string& rFilename)
// Purpose: Does a file exist?
// Created: 20/11/03
//
// --------------------------------------------------------------------------
-bool FileExists(const char *Filename, int64_t *pFileSize, bool TreatLinksAsNotExisting)
+bool FileExists(const std::string& rFilename, int64_t *pFileSize,
+ bool TreatLinksAsNotExisting)
{
EMU_STRUCT_STAT st;
- if(EMU_LSTAT(Filename, &st) != 0)
+ if(EMU_LSTAT(rFilename.c_str(), &st) != 0)
{
if(errno == ENOENT)
{
diff --git a/lib/common/Utils.h b/lib/common/Utils.h
index d6792077..8d98a520 100644
--- a/lib/common/Utils.h
+++ b/lib/common/Utils.h
@@ -15,13 +15,16 @@
#include "MemLeakFindOn.h"
+std::string GetBoxBackupVersion();
+
void SplitString(const std::string &String, char SplitOn, std::vector<std::string> &rOutput);
#ifdef SHOW_BACKTRACE_ON_EXCEPTION
void DumpStackBacktrace();
#endif
-bool FileExists(const char *Filename, int64_t *pFileSize = 0, bool TreatLinksAsNotExisting = false);
+bool FileExists(const std::string& rFilename, int64_t *pFileSize = 0,
+ bool TreatLinksAsNotExisting = false);
enum
{
diff --git a/lib/compress/Makefile.extra b/lib/compress/Makefile.extra
index 3598f1c9..a29fcdb4 100644
--- a/lib/compress/Makefile.extra
+++ b/lib/compress/Makefile.extra
@@ -3,5 +3,5 @@ MAKEEXCEPTION = ../../lib/common/makeexception.pl
# AUTOGEN SEEDING
autogen_CompressException.h autogen_CompressException.cpp: $(MAKEEXCEPTION) CompressException.txt
- $(PERL) $(MAKEEXCEPTION) CompressException.txt
+ $(_PERL) $(MAKEEXCEPTION) CompressException.txt
diff --git a/lib/crypto/Makefile.extra b/lib/crypto/Makefile.extra
index f9d63a42..3c94389f 100644
--- a/lib/crypto/Makefile.extra
+++ b/lib/crypto/Makefile.extra
@@ -3,5 +3,5 @@ MAKEEXCEPTION = ../../lib/common/makeexception.pl
# AUTOGEN SEEDING
autogen_CipherException.cpp autogen_CipherException.h: $(MAKEEXCEPTION) CipherException.txt
- $(PERL) $(MAKEEXCEPTION) CipherException.txt
+ $(_PERL) $(MAKEEXCEPTION) CipherException.txt
diff --git a/lib/httpserver/HTTPRequest.cpp b/lib/httpserver/HTTPRequest.cpp
index e146a0a3..4c5dc149 100644
--- a/lib/httpserver/HTTPRequest.cpp
+++ b/lib/httpserver/HTTPRequest.cpp
@@ -535,9 +535,11 @@ void HTTPRequest::ParseHeaders(IOStreamGetLine &rGetLine, int Timeout)
{
++dataStart;
}
-
- if(p == sizeof("Content-Length")-1
- && ::strncasecmp(h, "Content-Length", sizeof("Content-Length")-1) == 0)
+
+ std::string header_name(ToLowerCase(std::string(h,
+ p)));
+
+ if (header_name == "content-length")
{
// Decode number
long len = ::strtol(h + dataStart, NULL, 10); // returns zero in error case, this is OK
@@ -545,14 +547,12 @@ void HTTPRequest::ParseHeaders(IOStreamGetLine &rGetLine, int Timeout)
// Store
mContentLength = len;
}
- else if(p == sizeof("Content-Type")-1
- && ::strncasecmp(h, "Content-Type", sizeof("Content-Type")-1) == 0)
+ else if (header_name == "content-type")
{
// Store rest of string as content type
mContentType = h + dataStart;
}
- else if(p == sizeof("Host")-1
- && ::strncasecmp(h, "Host", sizeof("Host")-1) == 0)
+ else if (header_name == "host")
{
// Store host header
mHostName = h + dataStart;
@@ -572,14 +572,12 @@ void HTTPRequest::ParseHeaders(IOStreamGetLine &rGetLine, int Timeout)
"port = " << mHostPort);
}
}
- else if(p == sizeof("Cookie")-1
- && ::strncasecmp(h, "Cookie", sizeof("Cookie")-1) == 0)
+ else if (header_name == "cookie")
{
// Parse cookies
ParseCookies(header, dataStart);
}
- else if(p == sizeof("Connection")-1
- && ::strncasecmp(h, "Connection", sizeof("Connection")-1) == 0)
+ else if (header_name == "connection")
{
// Connection header, what is required?
const char *v = h + dataStart;
@@ -595,8 +593,7 @@ void HTTPRequest::ParseHeaders(IOStreamGetLine &rGetLine, int Timeout)
}
else
{
- std::string name = header.substr(0, p);
- mExtraHeaders.push_back(Header(name,
+ mExtraHeaders.push_back(Header(header_name,
h + dataStart));
}
diff --git a/lib/httpserver/HTTPRequest.h b/lib/httpserver/HTTPRequest.h
index 90215751..ca50e60f 100644
--- a/lib/httpserver/HTTPRequest.h
+++ b/lib/httpserver/HTTPRequest.h
@@ -97,16 +97,19 @@ public:
const std::string &GetCookie(const char *CookieName) const;
bool GetHeader(const std::string& rName, std::string* pValueOut) const
{
+ std::string header = ToLowerCase(rName);
+
for (std::vector<Header>::const_iterator
i = mExtraHeaders.begin();
i != mExtraHeaders.end(); i++)
{
- if (i->first == rName)
+ if (i->first == header)
{
*pValueOut = i->second;
return true;
}
}
+
return false;
}
std::vector<Header> GetHeaders() { return mExtraHeaders; }
@@ -128,7 +131,7 @@ public:
void AddHeader(const std::string& rName, const std::string& rValue)
{
- mExtraHeaders.push_back(Header(rName, rValue));
+ mExtraHeaders.push_back(Header(ToLowerCase(rName), rValue));
}
bool IsExpectingContinue() const { return mExpectContinue; }
const char* GetVerb() const
@@ -168,6 +171,17 @@ private:
bool mExpectContinue;
IOStream* mpStreamToReadFrom;
std::string mHttpVerb;
+
+ std::string ToLowerCase(const std::string& rInput) const
+ {
+ std::string output = rInput;
+ for (std::string::iterator c = output.begin();
+ c != output.end(); c++)
+ {
+ *c = tolower(*c);
+ }
+ return output;
+ }
};
#endif // HTTPREQUEST__H
diff --git a/lib/httpserver/HTTPServer.cpp b/lib/httpserver/HTTPServer.cpp
index b8b02249..be1db687 100644
--- a/lib/httpserver/HTTPServer.cpp
+++ b/lib/httpserver/HTTPServer.cpp
@@ -153,21 +153,21 @@ void HTTPServer::Connection(SocketStream &rStream)
// Generate a response
HTTPResponse response(&rStream);
+
try
{
Handle(request, response);
}
catch(BoxException &e)
{
- char exceptionCode[64];
- ::sprintf(exceptionCode, "(%d/%d)", e.GetType(), e.GetSubType());
- SendInternalErrorResponse(exceptionCode, rStream);
- return;
+ char exceptionCode[256];
+ ::sprintf(exceptionCode, "%s (%d/%d)", e.what(),
+ e.GetType(), e.GetSubType());
+ SendInternalErrorResponse(exceptionCode, response);
}
catch(...)
{
- SendInternalErrorResponse("unknown", rStream);
- return;
+ SendInternalErrorResponse("unknown", response);
}
// Keep alive?
@@ -186,7 +186,7 @@ void HTTPServer::Connection(SocketStream &rStream)
response.Send(request.GetMethod() == HTTPRequest::Method_HEAD);
}
- // Notify derived claases
+ // Notify derived classes
HTTPConnectionClosing();
}
@@ -194,12 +194,14 @@ void HTTPServer::Connection(SocketStream &rStream)
// --------------------------------------------------------------------------
//
// Function
-// Name: HTTPServer::SendInternalErrorResponse(const char *, SocketStream &)
-// Purpose: Sends an error response to the remote side
+// Name: HTTPServer::SendInternalErrorResponse(const char*,
+// HTTPResponse&)
+// Purpose: Generates an error message in the provided response
// Created: 26/3/04
//
// --------------------------------------------------------------------------
-void HTTPServer::SendInternalErrorResponse(const char *Error, SocketStream &rStream)
+void HTTPServer::SendInternalErrorResponse(const std::string& rErrorMsg,
+ HTTPResponse& rResponse)
{
#define ERROR_HTML_1 "<html><head><title>Internal Server Error</title></head>\n" \
"<h1>Internal Server Error</h1>\n" \
@@ -209,15 +211,11 @@ void HTTPServer::SendInternalErrorResponse(const char *Error, SocketStream &rStr
"</body>\n</html>\n"
// Generate the error page
- HTTPResponse response(&rStream);
- response.SetResponseCode(HTTPResponse::Code_InternalServerError);
- response.SetContentType("text/html");
- response.Write(ERROR_HTML_1, sizeof(ERROR_HTML_1) - 1);
- response.Write(Error, ::strlen(Error));
- response.Write(ERROR_HTML_2, sizeof(ERROR_HTML_2) - 1);
-
- // Send the error response
- response.Send();
+ // rResponse.SetResponseCode(HTTPResponse::Code_InternalServerError);
+ rResponse.SetContentType("text/html");
+ rResponse.Write(ERROR_HTML_1, sizeof(ERROR_HTML_1) - 1);
+ rResponse.IOStream::Write(rErrorMsg.c_str());
+ rResponse.Write(ERROR_HTML_2, sizeof(ERROR_HTML_2) - 1);
}
diff --git a/lib/httpserver/HTTPServer.h b/lib/httpserver/HTTPServer.h
index 8009438d..d9f74949 100644
--- a/lib/httpserver/HTTPServer.h
+++ b/lib/httpserver/HTTPServer.h
@@ -52,15 +52,17 @@ public:
virtual void HTTPConnectionOpening();
virtual void HTTPConnectionClosing();
+protected:
+ void SendInternalErrorResponse(const std::string& rErrorMsg,
+ HTTPResponse& rResponse);
+ int GetTimeout() { return mTimeout; }
+
private:
+ int mTimeout; // Timeout for read operations
const char *DaemonName() const;
const ConfigurationVerify *GetConfigVerify() const;
void Run();
void Connection(SocketStream &rStream);
- void SendInternalErrorResponse(const char *Error, SocketStream &rStream);
-
-private:
- int mTimeout; // Timeout for read operations
};
// Root level
diff --git a/lib/httpserver/Makefile.extra b/lib/httpserver/Makefile.extra
index f0ca62be..ef47f398 100644
--- a/lib/httpserver/Makefile.extra
+++ b/lib/httpserver/Makefile.extra
@@ -3,5 +3,5 @@ MAKEEXCEPTION = ../../lib/common/makeexception.pl
# AUTOGEN SEEDING
autogen_HTTPException.h autogen_HTTPException.cpp: $(MAKEEXCEPTION) HTTPException.txt
- perl $(MAKEEXCEPTION) HTTPException.txt
+ $(_PERL) $(MAKEEXCEPTION) HTTPException.txt
diff --git a/lib/httpserver/S3Simulator.cpp b/lib/httpserver/S3Simulator.cpp
new file mode 100644
index 00000000..4f6bb3e6
--- /dev/null
+++ b/lib/httpserver/S3Simulator.cpp
@@ -0,0 +1,309 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: S3Client.cpp
+// Purpose: Amazon S3 client helper implementation class
+// Created: 09/01/2009
+//
+// --------------------------------------------------------------------------
+
+#include "Box.h"
+
+#include <algorithm>
+#include <cstring>
+
+// #include <cstdio>
+// #include <ctime>
+
+#include <openssl/hmac.h>
+
+#include "HTTPRequest.h"
+#include "HTTPResponse.h"
+#include "autogen_HTTPException.h"
+#include "IOStream.h"
+#include "Logging.h"
+#include "S3Simulator.h"
+#include "decode.h"
+#include "encode.h"
+
+#include "MemLeakFindOn.h"
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: HTTPServer::GetConfigVerify()
+// Purpose: Returns additional configuration options for the
+// S3 simulator. Currently the access key, secret key
+// and store directory can be configured.
+// Created: 09/01/09
+//
+// --------------------------------------------------------------------------
+const ConfigurationVerify* S3Simulator::GetConfigVerify() const
+{
+ static ConfigurationVerifyKey verifyserverkeys[] =
+ {
+ HTTPSERVER_VERIFY_SERVER_KEYS(ConfigurationVerifyKey::NoDefaultValue) // no default addresses
+ };
+
+ static ConfigurationVerify verifyserver[] =
+ {
+ {
+ "Server",
+ 0,
+ verifyserverkeys,
+ ConfigTest_Exists | ConfigTest_LastEntry,
+ 0
+ }
+ };
+
+ static ConfigurationVerifyKey verifyrootkeys[] =
+ {
+ ConfigurationVerifyKey("AccessKey", ConfigTest_Exists),
+ ConfigurationVerifyKey("SecretKey", ConfigTest_Exists),
+ ConfigurationVerifyKey("StoreDirectory", ConfigTest_Exists),
+ HTTPSERVER_VERIFY_ROOT_KEYS
+ };
+
+ static ConfigurationVerify verify =
+ {
+ "root",
+ verifyserver,
+ verifyrootkeys,
+ ConfigTest_Exists | ConfigTest_LastEntry,
+ 0
+ };
+
+ return &verify;
+}
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: S3Simulator::Handle(HTTPRequest &rRequest,
+// HTTPResponse &rResponse)
+// Purpose: Handles any incoming S3 request, by checking
+// authorization and then dispatching to one of the
+// private Handle* methods.
+// Created: 09/01/09
+//
+// --------------------------------------------------------------------------
+
+void S3Simulator::Handle(HTTPRequest &rRequest, HTTPResponse &rResponse)
+{
+ // if anything goes wrong, return a 500 error
+ rResponse.SetResponseCode(HTTPResponse::Code_InternalServerError);
+ rResponse.SetContentType("text/plain");
+
+ try
+ {
+ const Configuration& rConfig(GetConfiguration());
+ std::string access_key = rConfig.GetKeyValue("AccessKey");
+ std::string secret_key = rConfig.GetKeyValue("SecretKey");
+
+ std::string md5, date, bucket;
+ rRequest.GetHeader("content-md5", &md5);
+ rRequest.GetHeader("date", &date);
+
+ std::string host = rRequest.GetHostName();
+ std::string s3suffix = ".s3.amazonaws.com";
+ if (host.size() > s3suffix.size())
+ {
+ std::string suffix = host.substr(host.size() -
+ s3suffix.size(), s3suffix.size());
+ if (suffix == s3suffix)
+ {
+ bucket = host.substr(0, host.size() -
+ s3suffix.size());
+ }
+ }
+
+ std::ostringstream data;
+ data << rRequest.GetVerb() << "\n";
+ data << md5 << "\n";
+ data << rRequest.GetContentType() << "\n";
+ data << date << "\n";
+
+ // header names are already in lower case, i.e. canonical form
+
+ std::vector<HTTPRequest::Header> headers = rRequest.GetHeaders();
+ std::sort(headers.begin(), headers.end());
+
+ for (std::vector<HTTPRequest::Header>::iterator
+ i = headers.begin(); i != headers.end(); i++)
+ {
+ if (i->first.substr(0, 5) == "x-amz")
+ {
+ data << i->first << ":" << i->second << "\n";
+ }
+ }
+
+ if (! bucket.empty())
+ {
+ data << "/" << bucket;
+ }
+
+ data << rRequest.GetRequestURI();
+ std::string data_string = data.str();
+
+ unsigned char digest_buffer[EVP_MAX_MD_SIZE];
+ unsigned int digest_size = sizeof(digest_buffer);
+ /* unsigned char* mac = */ HMAC(EVP_sha1(),
+ secret_key.c_str(), secret_key.size(),
+ (const unsigned char*)data_string.c_str(),
+ data_string.size(), digest_buffer, &digest_size);
+ std::string digest((const char *)digest_buffer, digest_size);
+
+ base64::encoder encoder;
+ std::string expectedAuth = "AWS " + access_key + ":" +
+ encoder.encode(digest);
+
+ if (expectedAuth[expectedAuth.size() - 1] == '\n')
+ {
+ expectedAuth = expectedAuth.substr(0,
+ expectedAuth.size() - 1);
+ }
+
+ std::string actualAuth;
+ if (!rRequest.GetHeader("authorization", &actualAuth) ||
+ actualAuth != expectedAuth)
+ {
+ rResponse.SetResponseCode(HTTPResponse::Code_Unauthorized);
+ SendInternalErrorResponse("Authentication Failed",
+ rResponse);
+ }
+ else if (rRequest.GetMethod() == HTTPRequest::Method_GET)
+ {
+ HandleGet(rRequest, rResponse);
+ }
+ else if (rRequest.GetMethod() == HTTPRequest::Method_PUT)
+ {
+ HandlePut(rRequest, rResponse);
+ }
+ else
+ {
+ rResponse.SetResponseCode(HTTPResponse::Code_MethodNotAllowed);
+ SendInternalErrorResponse("Unsupported Method",
+ rResponse);
+ }
+ }
+ catch (CommonException &ce)
+ {
+ SendInternalErrorResponse(ce.what(), rResponse);
+ }
+ catch (std::exception &e)
+ {
+ SendInternalErrorResponse(e.what(), rResponse);
+ }
+ catch (...)
+ {
+ SendInternalErrorResponse("Unknown exception", rResponse);
+ }
+
+ if (rResponse.GetResponseCode() != 200 &&
+ rResponse.GetSize() == 0)
+ {
+ // no error message written, provide a default
+ std::ostringstream s;
+ s << rResponse.GetResponseCode();
+ SendInternalErrorResponse(s.str().c_str(), rResponse);
+ }
+
+ return;
+}
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: S3Simulator::HandleGet(HTTPRequest &rRequest,
+// HTTPResponse &rResponse)
+// Purpose: Handles an S3 GET request, i.e. downloading an
+// existing object.
+// Created: 09/01/09
+//
+// --------------------------------------------------------------------------
+
+void S3Simulator::HandleGet(HTTPRequest &rRequest, HTTPResponse &rResponse)
+{
+ std::string path = GetConfiguration().GetKeyValue("StoreDirectory");
+ path += rRequest.GetRequestURI();
+ std::auto_ptr<FileStream> apFile;
+
+ try
+ {
+ apFile.reset(new FileStream(path));
+ }
+ catch (CommonException &ce)
+ {
+ if (ce.GetSubType() == CommonException::OSFileOpenError)
+ {
+ rResponse.SetResponseCode(HTTPResponse::Code_NotFound);
+ }
+ else if (ce.GetSubType() == CommonException::AccessDenied)
+ {
+ rResponse.SetResponseCode(HTTPResponse::Code_Forbidden);
+ }
+ throw;
+ }
+
+ // http://docs.amazonwebservices.com/AmazonS3/2006-03-01/UsingRESTOperations.html
+ apFile->CopyStreamTo(rResponse);
+ rResponse.AddHeader("x-amz-id-2", "qBmKRcEWBBhH6XAqsKU/eg24V3jf/kWKN9dJip1L/FpbYr9FDy7wWFurfdQOEMcY");
+ rResponse.AddHeader("x-amz-request-id", "F2A8CCCA26B4B26D");
+ rResponse.AddHeader("Date", "Wed, 01 Mar 2006 12:00:00 GMT");
+ rResponse.AddHeader("Last-Modified", "Sun, 1 Jan 2006 12:00:00 GMT");
+ rResponse.AddHeader("ETag", "\"828ef3fdfa96f00ad9f27c383fc9ac7f\"");
+ rResponse.AddHeader("Server", "AmazonS3");
+ rResponse.SetResponseCode(HTTPResponse::Code_OK);
+}
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: S3Simulator::HandlePut(HTTPRequest &rRequest,
+// HTTPResponse &rResponse)
+// Purpose: Handles an S3 PUT request, i.e. uploading data to
+// create or replace an object.
+// Created: 09/01/09
+//
+// --------------------------------------------------------------------------
+
+void S3Simulator::HandlePut(HTTPRequest &rRequest, HTTPResponse &rResponse)
+{
+ std::string path = GetConfiguration().GetKeyValue("StoreDirectory");
+ path += rRequest.GetRequestURI();
+ std::auto_ptr<FileStream> apFile;
+
+ try
+ {
+ apFile.reset(new FileStream(path, O_CREAT | O_WRONLY));
+ }
+ catch (CommonException &ce)
+ {
+ if (ce.GetSubType() == CommonException::OSFileOpenError)
+ {
+ rResponse.SetResponseCode(HTTPResponse::Code_NotFound);
+ }
+ else if (ce.GetSubType() == CommonException::AccessDenied)
+ {
+ rResponse.SetResponseCode(HTTPResponse::Code_Forbidden);
+ }
+ throw;
+ }
+
+ if (rRequest.IsExpectingContinue())
+ {
+ rResponse.SendContinue();
+ }
+
+ rRequest.ReadContent(*apFile);
+
+ // http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTObjectPUT.html
+ rResponse.AddHeader("x-amz-id-2", "LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7");
+ rResponse.AddHeader("x-amz-request-id", "F2A8CCCA26B4B26D");
+ rResponse.AddHeader("Date", "Wed, 01 Mar 2006 12:00:00 GMT");
+ rResponse.AddHeader("Last-Modified", "Sun, 1 Jan 2006 12:00:00 GMT");
+ rResponse.AddHeader("ETag", "\"828ef3fdfa96f00ad9f27c383fc9ac7f\"");
+ rResponse.SetContentType("");
+ rResponse.AddHeader("Server", "AmazonS3");
+ rResponse.SetResponseCode(HTTPResponse::Code_OK);
+}
diff --git a/lib/httpserver/S3Simulator.h b/lib/httpserver/S3Simulator.h
new file mode 100644
index 00000000..f80770ee
--- /dev/null
+++ b/lib/httpserver/S3Simulator.h
@@ -0,0 +1,40 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: S3Simulator.h
+// Purpose: Amazon S3 simulation HTTP server for S3 testing
+// Created: 09/01/2009
+//
+// --------------------------------------------------------------------------
+
+#ifndef S3SIMULATOR__H
+#define S3SIMULATOR__H
+
+#include "HTTPServer.h"
+
+class ConfigurationVerify;
+class HTTPRequest;
+class HTTPResponse;
+
+// --------------------------------------------------------------------------
+//
+// Class
+// Name: S3Simulator
+// Purpose: Amazon S3 simulation HTTP server for S3 testing
+// Created: 09/01/2009
+//
+// --------------------------------------------------------------------------
+class S3Simulator : public HTTPServer
+{
+public:
+ S3Simulator() { }
+ ~S3Simulator() { }
+
+ const ConfigurationVerify* GetConfigVerify() const;
+ virtual void Handle(HTTPRequest &rRequest, HTTPResponse &rResponse);
+ virtual void HandleGet(HTTPRequest &rRequest, HTTPResponse &rResponse);
+ virtual void HandlePut(HTTPRequest &rRequest, HTTPResponse &rResponse);
+};
+
+#endif // S3SIMULATOR__H
+
diff --git a/lib/raidfile/Makefile.extra b/lib/raidfile/Makefile.extra
index 4d904e8a..bf06ed2f 100644
--- a/lib/raidfile/Makefile.extra
+++ b/lib/raidfile/Makefile.extra
@@ -3,5 +3,5 @@ MAKEEXCEPTION = ../../lib/common/makeexception.pl
# AUTOGEN SEEDING
autogen_RaidFileException.h autogen_RaidFileException.cpp: $(MAKEEXCEPTION) RaidFileException.txt
- $(PERL) $(MAKEEXCEPTION) RaidFileException.txt
+ $(_PERL) $(MAKEEXCEPTION) RaidFileException.txt
diff --git a/lib/raidfile/RaidFileException.txt b/lib/raidfile/RaidFileException.txt
index c69dc2a2..c7ddfcc5 100644
--- a/lib/raidfile/RaidFileException.txt
+++ b/lib/raidfile/RaidFileException.txt
@@ -23,3 +23,6 @@ CanOnlyGetUsageBeforeCommit 19
CanOnlyGetFileSizeBeforeCommit 20
ErrorOpeningWriteFileOnTruncate 21
FileIsCurrentlyOpenForWriting 22
+RequestedModifyUnreferencedFile 23 Internal error: the server attempted to modify a file which has no references.
+RequestedModifyMultiplyReferencedFile 24 Internal error: the server attempted to modify a file which has multiple references.
+RequestedDeleteReferencedFile 25 Internal error: the server attempted to delete a file which is still referenced.
diff --git a/lib/raidfile/RaidFileUtil.h b/lib/raidfile/RaidFileUtil.h
index 16670bf1..a581047c 100644
--- a/lib/raidfile/RaidFileUtil.h
+++ b/lib/raidfile/RaidFileUtil.h
@@ -37,7 +37,7 @@ public:
AsRaidWithMissingNotRecoverable = 4
} ExistType;
- typedef enum
+ enum
{
Stripe1Exists = 1,
Stripe2Exists = 2,
diff --git a/lib/raidfile/RaidFileWrite.cpp b/lib/raidfile/RaidFileWrite.cpp
index efec43a2..2d852f86 100644
--- a/lib/raidfile/RaidFileWrite.cpp
+++ b/lib/raidfile/RaidFileWrite.cpp
@@ -42,20 +42,50 @@
//
// Function
// Name: RaidFileWrite::RaidFileWrite(int, const std::string &)
-// Purpose: Construtor, just stores requried details
+// Purpose: Simple constructor, just stores required details
// Created: 2003/07/10
//
// --------------------------------------------------------------------------
RaidFileWrite::RaidFileWrite(int SetNumber, const std::string &Filename)
: mSetNumber(SetNumber),
mFilename(Filename),
- mOSFileHandle(-1) // not valid file handle
+ mOSFileHandle(-1), // not valid file handle
+ mRefCount(-1) // unknown refcount
{
}
// --------------------------------------------------------------------------
//
// Function
+// Name: RaidFileWrite::RaidFileWrite(int,
+// const std::string &, int refcount)
+// Purpose: Constructor with check for overwriting file
+// with multiple references
+// Created: 2009/07/05
+//
+// --------------------------------------------------------------------------
+RaidFileWrite::RaidFileWrite(int SetNumber, const std::string &Filename,
+ int refcount)
+ : mSetNumber(SetNumber),
+ mFilename(Filename),
+ mOSFileHandle(-1), // not valid file handle
+ mRefCount(refcount)
+{
+ // Can't check for zero refcount here, because it's legal
+ // to create a RaidFileWrite to delete an object with zero refcount.
+ // Check in Commit() and Delete() instead.
+ if (refcount > 1)
+ {
+ BOX_ERROR("Attempted to modify object " << mFilename <<
+ ", which has " << refcount << " references");
+ THROW_EXCEPTION(RaidFileException,
+ RequestedModifyMultiplyReferencedFile);
+ }
+}
+
+// --------------------------------------------------------------------------
+//
+// Function
// Name: RaidFileWrite::~RaidFileWrite()
// Purpose: Destructor (will discard written file if not commited)
// Created: 2003/07/10
@@ -113,6 +143,7 @@ void RaidFileWrite::Open(bool AllowOverwrite)
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
if(mOSFileHandle == -1)
{
+ BOX_LOG_SYS_ERROR("Failed to open file: " << writeFilename);
THROW_EXCEPTION(RaidFileException, ErrorOpeningWriteFile)
}
@@ -249,7 +280,15 @@ void RaidFileWrite::Commit(bool ConvertToRaidNow)
{
THROW_EXCEPTION(RaidFileException, NotOpen)
}
-
+
+ if (mRefCount == 0)
+ {
+ BOX_ERROR("Attempted to modify object " << mFilename <<
+ ", which has no references");
+ THROW_EXCEPTION(RaidFileException,
+ RequestedModifyUnreferencedFile);
+ }
+
// Rename it into place -- BEFORE it's closed so lock remains
#ifdef WIN32
@@ -274,13 +313,15 @@ void RaidFileWrite::Commit(bool ConvertToRaidNow)
if(::unlink(renameTo.c_str()) != 0 &&
GetLastError() != ERROR_FILE_NOT_FOUND)
{
- BOX_LOG_WIN_ERROR("failed to delete file: " << renameTo);
+ BOX_LOG_WIN_ERROR("Failed to delete file: " << renameTo);
THROW_EXCEPTION(RaidFileException, OSError)
}
#endif
if(::rename(renameFrom.c_str(), renameTo.c_str()) != 0)
{
+ BOX_LOG_SYS_ERROR("Failed to rename file: " << renameFrom <<
+ " to " << renameTo);
THROW_EXCEPTION(RaidFileException, OSError)
}
@@ -335,6 +376,7 @@ void RaidFileWrite::Discard()
::close(mOSFileHandle) != 0)
#endif // !WIN32
{
+ BOX_LOG_SYS_ERROR("Failed to delete file: " << writeFilename);
THROW_EXCEPTION(RaidFileException, OSError)
}
@@ -562,6 +604,8 @@ void RaidFileWrite::TransformToRaidStorage()
ASSERT((::lseek(parity, 0, SEEK_CUR) % blockSize) == 0);
if(::write(parity, &sw, sizeof(sw)) != sizeof(sw))
{
+ BOX_LOG_SYS_ERROR("Failed to write to file: " <<
+ writeFilename);
THROW_EXCEPTION(RaidFileException, OSError)
}
}
@@ -600,6 +644,8 @@ void RaidFileWrite::TransformToRaidStorage()
// Finally delete the write file
if(::unlink(writeFilename.c_str()) != 0)
{
+ BOX_LOG_SYS_ERROR("Failed to delete file: " <<
+ writeFilename);
THROW_EXCEPTION(RaidFileException, OSError)
}
}
@@ -630,6 +676,14 @@ void RaidFileWrite::TransformToRaidStorage()
// --------------------------------------------------------------------------
void RaidFileWrite::Delete()
{
+ if (mRefCount != 0 && mRefCount != -1)
+ {
+ BOX_ERROR("Attempted to delete object " << mFilename <<
+ " which has " << mRefCount << " references");
+ THROW_EXCEPTION(RaidFileException,
+ RequestedDeleteReferencedFile);
+ }
+
// Get disc set
RaidFileController &rcontroller(RaidFileController::GetController());
RaidFileDiscSet rdiscSet(rcontroller.GetDiscSet(mSetNumber));
diff --git a/lib/raidfile/RaidFileWrite.h b/lib/raidfile/RaidFileWrite.h
index d7e51f21..418f90ee 100644
--- a/lib/raidfile/RaidFileWrite.h
+++ b/lib/raidfile/RaidFileWrite.h
@@ -28,6 +28,7 @@ class RaidFileWrite : public IOStream
{
public:
RaidFileWrite(int SetNumber, const std::string &Filename);
+ RaidFileWrite(int SetNumber, const std::string &Filename, int refcount);
~RaidFileWrite();
private:
RaidFileWrite(const RaidFileWrite &rToCopy);
@@ -60,6 +61,7 @@ private:
int mSetNumber;
std::string mFilename;
int mOSFileHandle;
+ int mRefCount;
};
#endif // RAIDFILEWRITE__H
diff --git a/lib/server/LocalProcessStream.cpp b/lib/server/LocalProcessStream.cpp
index af24de1b..c331a135 100644
--- a/lib/server/LocalProcessStream.cpp
+++ b/lib/server/LocalProcessStream.cpp
@@ -43,13 +43,14 @@
// Created: 12/3/04
//
// --------------------------------------------------------------------------
-std::auto_ptr<IOStream> LocalProcessStream(const char *CommandLine, pid_t &rPidOut)
+std::auto_ptr<IOStream> LocalProcessStream(const std::string& rCommandLine,
+ pid_t &rPidOut)
{
#ifndef WIN32
// Split up command
std::vector<std::string> command;
- SplitString(std::string(CommandLine), ' ', command);
+ SplitString(rCommandLine, ' ', command);
// Build arguments
char *args[MAX_ARGUMENTS + 4];
@@ -137,8 +138,8 @@ std::auto_ptr<IOStream> LocalProcessStream(const char *CommandLine, pid_t &rPidO
startupInfo.hStdInput = INVALID_HANDLE_VALUE;
startupInfo.dwFlags |= STARTF_USESTDHANDLES;
- CHAR* commandLineCopy = (CHAR*)malloc(strlen(CommandLine) + 1);
- strcpy(commandLineCopy, CommandLine);
+ CHAR* commandLineCopy = (CHAR*)malloc(rCommandLine.size() + 1);
+ strcpy(commandLineCopy, rCommandLine.c_str());
BOOL result = CreateProcess(NULL,
commandLineCopy, // command line
@@ -155,7 +156,7 @@ std::auto_ptr<IOStream> LocalProcessStream(const char *CommandLine, pid_t &rPidO
if(!result)
{
- BOX_ERROR("Failed to CreateProcess: '" << CommandLine <<
+ BOX_ERROR("Failed to CreateProcess: '" << rCommandLine <<
"': " << GetErrorMessage(GetLastError()));
CloseHandle(writeInChild);
CloseHandle(readFromChild);
diff --git a/lib/server/LocalProcessStream.h b/lib/server/LocalProcessStream.h
index 490c0f45..51e51f8a 100644
--- a/lib/server/LocalProcessStream.h
+++ b/lib/server/LocalProcessStream.h
@@ -13,7 +13,8 @@
#include <memory>
#include "IOStream.h"
-std::auto_ptr<IOStream> LocalProcessStream(const char *CommandLine, pid_t &rPidOut);
+std::auto_ptr<IOStream> LocalProcessStream(const std::string& rCommandLine,
+ pid_t &rPidOut);
#endif // LOCALPROCESSSTREAM__H
diff --git a/lib/server/Makefile.extra b/lib/server/Makefile.extra
index 33fac0a1..7fc6baf9 100644
--- a/lib/server/Makefile.extra
+++ b/lib/server/Makefile.extra
@@ -3,9 +3,9 @@ MAKEEXCEPTION = ../../lib/common/makeexception.pl
# AUTOGEN SEEDING
autogen_ServerException.h autogen_ServerException.cpp: $(MAKEEXCEPTION) ServerException.txt
- $(PERL) $(MAKEEXCEPTION) ServerException.txt
+ $(_PERL) $(MAKEEXCEPTION) ServerException.txt
# AUTOGEN SEEDING
autogen_ConnectionException.h autogen_ConnectionException.cpp: $(MAKEEXCEPTION) ConnectionException.txt
- $(PERL) $(MAKEEXCEPTION) ConnectionException.txt
+ $(_PERL) $(MAKEEXCEPTION) ConnectionException.txt
diff --git a/lib/server/ServerControl.cpp b/lib/server/ServerControl.cpp
index c4668b57..b9650cee 100644
--- a/lib/server/ServerControl.cpp
+++ b/lib/server/ServerControl.cpp
@@ -1,6 +1,7 @@
#include "Box.h"
#include <errno.h>
+#include <stdio.h>
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
diff --git a/lib/server/ServerStream.h b/lib/server/ServerStream.h
index 34de7def..e49dbcbe 100644
--- a/lib/server/ServerStream.h
+++ b/lib/server/ServerStream.h
@@ -302,16 +302,7 @@ public:
// Clean up child processes (if forking daemon)
if(ForkToHandleRequests && !IsSingleProcess())
{
- int status = 0;
- int p = 0;
- do
- {
- if((p = ::waitpid(0 /* any child in process group */, &status, WNOHANG)) == -1
- && errno != ECHILD && errno != EINTR)
- {
- THROW_EXCEPTION(ServerException, ServerWaitOnChildError)
- }
- } while(p > 0);
+ WaitForChildren();
}
#endif // !WIN32
}
@@ -326,6 +317,49 @@ public:
DeleteSockets();
}
+ #ifndef WIN32 // no waitpid() on Windows
+ void WaitForChildren()
+ {
+ int p = 0;
+ do
+ {
+ int status = 0;
+ p = ::waitpid(0 /* any child in process group */,
+ &status, WNOHANG);
+
+ if(p == -1 && errno != ECHILD && errno != EINTR)
+ {
+ THROW_EXCEPTION(ServerException,
+ ServerWaitOnChildError)
+ }
+ else if(p == 0)
+ {
+ // no children exited, will return from
+ // function
+ }
+ else if(WIFEXITED(status))
+ {
+ BOX_INFO("child process " << p << " "
+ "terminated normally");
+ }
+ else if(WIFSIGNALED(status))
+ {
+ int sig = WTERMSIG(status);
+ BOX_ERROR("child process " << p << " "
+ "terminated abnormally with "
+ "signal " << sig);
+ }
+ else
+ {
+ BOX_WARNING("something unknown happened "
+ "to child process " << p << ": "
+ "status = " << status);
+ }
+ }
+ while(p > 0);
+ }
+ #endif
+
virtual void HandleConnection(StreamType &rStream)
{
Connection(rStream);
diff --git a/lib/win32/emu.cpp b/lib/win32/emu.cpp
index ad8c3041..3a56661a 100644
--- a/lib/win32/emu.cpp
+++ b/lib/win32/emu.cpp
@@ -417,6 +417,32 @@ std::string ConvertPathToAbsoluteUnicode(const char *pFileName)
}
tmpStr += filename;
+
+ // We are using direct filename access, which does not support ..,
+ // so we need to implement it ourselves.
+
+ for (std::string::size_type i = 1; i < tmpStr.size() - 3; i++)
+ {
+ if (tmpStr.substr(i, 3) == "\\..")
+ {
+ std::string::size_type lastSlash =
+ tmpStr.rfind('\\', i - 1);
+
+ if (lastSlash == std::string::npos)
+ {
+ // no previous directory, ignore it,
+ // CreateFile will fail with error 123
+ }
+ else
+ {
+ tmpStr.replace(lastSlash, i + 3 - lastSlash,
+ "");
+ }
+
+ i = lastSlash;
+ }
+ }
+
return tmpStr;
}
diff --git a/lib/win32/emu.h b/lib/win32/emu.h
index 811e6495..f3389590 100644
--- a/lib/win32/emu.h
+++ b/lib/win32/emu.h
@@ -117,7 +117,7 @@ inline struct passwd * getpwnam(const char * name)
#ifndef __MINGW32__
//not sure if these are correct
//S_IWRITE - writing permitted
- //_S_IREAD - reading permitted
+ //_S_IREAD - reading permitted
//_S_IREAD | _S_IWRITE -
#define S_IRUSR S_IWRITE
#define S_IWUSR S_IREAD
@@ -242,6 +242,15 @@ int closedir(DIR *dp);
extern DWORD winerrno; /* used to report errors from openfile() */
HANDLE openfile(const char *filename, int flags, int mode);
+inline int closefile(HANDLE handle)
+{
+ if (CloseHandle(handle) != TRUE)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+ return 0;
+}
#define LOG_DEBUG LOG_INFO
#define LOG_INFO 6
diff --git a/modules.txt b/modules.txt
index 8932f014..1be10efa 100644
--- a/modules.txt
+++ b/modules.txt
@@ -44,6 +44,7 @@ test/bbackupd bin/bbackupd bin/bbstored bin/bbstoreaccounts bin/bbackupquery bi
# HTTP server system
lib/httpserver lib/server
test/httpserver lib/httpserver
+bin/s3simulator lib/httpserver
# END_IF_DISTRIBUTION
diff --git a/parcels.txt b/parcels.txt
index fb708188..168653c3 100644
--- a/parcels.txt
+++ b/parcels.txt
@@ -8,12 +8,23 @@ backup-client
bin bbackupquery
bin bbackupctl
script bin/bbackupd/bbackupd-config
- noinstall script LICENSE.txt
+ noinstall script COPYING.txt
+ noinstall script LICENSE-GPL.txt
+ noinstall script LICENSE-DUAL.txt
+
+ html bbackupd
+ html bbackupquery
+ html bbackupctl
+ html bbackupd-config
+ html bbackupd.conf
+
+EXCEPT:mingw32,mingw32msvc
man bbackupd.8
man bbackupquery.8
man bbackupctl.8
man bbackupd-config.8
man bbackupd.conf.5
+END-EXCEPT
ONLY:mingw32,mingw32msvc
script bin/bbackupd/win32/installer.iss
@@ -22,6 +33,7 @@ ONLY:mingw32,mingw32msvc
END-ONLY
ONLY:mingw32
+ script /bin/mgwz.dll
script /bin/mingwm10.dll
END-ONLY
@@ -40,7 +52,19 @@ backup-server
script bin/bbstored/bbstored-certs
script bin/bbstored/bbstored-config
script lib/raidfile/raidfile-config
- noinstall script LICENSE.txt
+ noinstall script COPYING.txt
+ noinstall script LICENSE-GPL.txt
+ noinstall script LICENSE-DUAL.txt
+
+ html bbstored
+ html bbstoreaccounts
+ html bbstored-certs
+ html bbstored-config
+ html raidfile-config
+ html bbstored.conf
+ html raidfile.conf
+
+EXCEPT:mingw32,mingw32msvc
man bbstored.8
man bbstoreaccounts.8
man bbstored-certs.8
@@ -48,6 +72,7 @@ backup-server
man raidfile-config.8
man bbstored.conf.5
man raidfile.conf.5
+END-EXCEPT
ONLY:SunOS
script contrib/solaris/bbstored-manifest.xml lib/svc/manifest
diff --git a/test/backupdiff/difftestfiles.cpp b/test/backupdiff/difftestfiles.cpp
index 881876ca..33690f6b 100644
--- a/test/backupdiff/difftestfiles.cpp
+++ b/test/backupdiff/difftestfiles.cpp
@@ -10,6 +10,7 @@
#include "Box.h"
#include <string.h>
+#include <stdio.h>
#include "FileStream.h"
#include "PartialReadStream.h"
diff --git a/test/backupstore/Makefile.extra b/test/backupstore/Makefile.extra
new file mode 100644
index 00000000..e2e2d27c
--- /dev/null
+++ b/test/backupstore/Makefile.extra
@@ -0,0 +1 @@
+link-extra: ../../bin/bbstored/HousekeepStoreAccount.o
diff --git a/test/backupstore/testbackupstore.cpp b/test/backupstore/testbackupstore.cpp
index 0266d097..646e6b45 100644
--- a/test/backupstore/testbackupstore.cpp
+++ b/test/backupstore/testbackupstore.cpp
@@ -34,6 +34,10 @@
#include "BackupClientFileAttributes.h"
#include "BackupClientCryptoKeys.h"
#include "ServerControl.h"
+#include "BackupStoreAccountDatabase.h"
+#include "BackupStoreRefCountDatabase.h"
+#include "BackupStoreAccounts.h"
+#include "HousekeepStoreAccount.h"
#include "MemLeakFindOn.h"
@@ -470,7 +474,39 @@ void test_everything_deleted(BackupProtocolClient &protocol, int64_t DirID)
TEST_THAT(dirs == 0 || dirs == 2);
}
-int64_t create_test_data_subdirs(BackupProtocolClient &protocol, int64_t indir, const char *name, int depth)
+std::vector<uint32_t> ExpectedRefCounts;
+
+void set_refcount(int64_t ObjectID, uint32_t RefCount = 1)
+{
+ if (ExpectedRefCounts.size() <= ObjectID);
+ {
+ ExpectedRefCounts.resize(ObjectID + 1, 0);
+ }
+ ExpectedRefCounts[ObjectID] = RefCount;
+}
+
+void create_file_in_dir(std::string name, std::string source, int64_t parentId,
+ BackupProtocolClient &protocol, BackupStoreRefCountDatabase& rRefCount)
+{
+ BackupStoreFilenameClear name_encoded("file_One");
+ std::auto_ptr<IOStream> upload(BackupStoreFile::EncodeFile(
+ source.c_str(), parentId, name_encoded));
+ std::auto_ptr<BackupProtocolClientSuccess> stored(
+ protocol.QueryStoreFile(
+ parentId,
+ 0x123456789abcdefLL, /* modification time */
+ 0x7362383249872dfLL, /* attr hash */
+ 0, /* diff from ID */
+ name_encoded,
+ *upload));
+ int64_t objectId = stored->GetObjectID();
+ TEST_EQUAL(objectId, rRefCount.GetLastObjectIDUsed());
+ TEST_EQUAL(1, rRefCount.GetRefCount(objectId))
+ set_refcount(objectId, 1);
+}
+
+int64_t create_test_data_subdirs(BackupProtocolClient &protocol, int64_t indir,
+ const char *name, int depth, BackupStoreRefCountDatabase& rRefCount)
{
// Create a directory
int64_t subdirid = 0;
@@ -486,49 +522,27 @@ int64_t create_test_data_subdirs(BackupProtocolClient &protocol, int64_t indir,
}
printf("Create subdirs, depth = %d, dirid = %llx\n", depth, subdirid);
+
+ TEST_EQUAL(subdirid, rRefCount.GetLastObjectIDUsed());
+ TEST_EQUAL(1, rRefCount.GetRefCount(subdirid))
+ set_refcount(subdirid, 1);
// Put more directories in it, if we haven't gone down too far
if(depth > 0)
{
- create_test_data_subdirs(protocol, subdirid, "dir_One", depth - 1);
- create_test_data_subdirs(protocol, subdirid, "dir_Two", depth - 1);
+ create_test_data_subdirs(protocol, subdirid, "dir_One",
+ depth - 1, rRefCount);
+ create_test_data_subdirs(protocol, subdirid, "dir_Two",
+ depth - 1, rRefCount);
}
// Stick some files in it
- {
- BackupStoreFilenameClear name("file_One");
- std::auto_ptr<IOStream> upload(BackupStoreFile::EncodeFile("testfiles/file1", subdirid, name));
- std::auto_ptr<BackupProtocolClientSuccess> stored(protocol.QueryStoreFile(
- subdirid,
- 0x123456789abcdefLL, /* modification time */
- 0x7362383249872dfLL, /* attr hash */
- 0, /* diff from ID */
- name,
- *upload));
- }
- {
- BackupStoreFilenameClear name("file_Two");
- std::auto_ptr<IOStream> upload(BackupStoreFile::EncodeFile("testfiles/file1", subdirid, name));
- std::auto_ptr<BackupProtocolClientSuccess> stored(protocol.QueryStoreFile(
- subdirid,
- 0x123456789abcdefLL, /* modification time */
- 0x7362383249872dfLL, /* attr hash */
- 0, /* diff from ID */
- name,
- *upload));
- }
- {
- BackupStoreFilenameClear name("file_Three");
- std::auto_ptr<IOStream> upload(BackupStoreFile::EncodeFile("testfiles/file1", subdirid, name));
- std::auto_ptr<BackupProtocolClientSuccess> stored(protocol.QueryStoreFile(
- subdirid,
- 0x123456789abcdefLL, /* modification time */
- 0x7362383249872dfLL, /* attr hash */
- 0, /* diff from ID */
- name,
- *upload));
- }
-
+ create_file_in_dir("file_One", "testfiles/file1", subdirid, protocol,
+ rRefCount);
+ create_file_in_dir("file_Two", "testfiles/file1", subdirid, protocol,
+ rRefCount);
+ create_file_in_dir("file_Three", "testfiles/file1", subdirid, protocol,
+ rRefCount);
return subdirid;
}
@@ -630,7 +644,8 @@ void recursive_count_objects(const char *hostname, int64_t id, recursive_count_o
// Get a connection
SocketStreamTLS connReadOnly;
- connReadOnly.Open(context, Socket::TypeINET, hostname, BOX_PORT_BBSTORED);
+ connReadOnly.Open(context, Socket::TypeINET, hostname,
+ BOX_PORT_BBSTORED_TEST);
BackupProtocolClient protocolReadOnly(connReadOnly);
{
@@ -792,6 +807,7 @@ void test_server_1(BackupProtocolClient &protocol, BackupProtocolClient &protoco
store1objid = stored->GetObjectID();
TEST_THAT(store1objid == 2);
}
+ set_refcount(store1objid, 1);
// And retrieve it
{
// Retrieve as object
@@ -885,15 +901,60 @@ void test_server_1(BackupProtocolClient &protocol, BackupProtocolClient &protoco
}
}
-
-int test_server(const char *hostname)
+void init_context(TLSContext& rContext)
{
- // Context
- TLSContext context;
- context.Initialise(false /* client */,
+ rContext.Initialise(false /* client */,
"testfiles/clientCerts.pem",
"testfiles/clientPrivKey.pem",
"testfiles/clientTrustedCAs.pem");
+}
+
+std::auto_ptr<SocketStreamTLS> open_conn(const char *hostname,
+ TLSContext& rContext)
+{
+ init_context(rContext);
+ std::auto_ptr<SocketStreamTLS> conn(new SocketStreamTLS);
+ conn->Open(rContext, Socket::TypeINET, hostname,
+ BOX_PORT_BBSTORED_TEST);
+ return conn;
+}
+
+std::auto_ptr<BackupProtocolClient> test_server_login(SocketStreamTLS& rConn)
+{
+ // Make a protocol
+ std::auto_ptr<BackupProtocolClient> protocol(new
+ BackupProtocolClient(rConn));
+
+ // Check the version
+ std::auto_ptr<BackupProtocolClientVersion> serverVersion(
+ protocol->QueryVersion(BACKUP_STORE_SERVER_VERSION));
+ TEST_THAT(serverVersion->GetVersion() == BACKUP_STORE_SERVER_VERSION);
+
+ // Login
+ std::auto_ptr<BackupProtocolClientLoginConfirmed> loginConf(
+ protocol->QueryLogin(0x01234567, 0));
+
+ return protocol;
+}
+
+void run_housekeeping(BackupStoreAccountDatabase::Entry& rAccount)
+{
+ std::string rootDir = BackupStoreAccounts::GetAccountRoot(rAccount);
+ int discSet = rAccount.GetDiscSet();
+
+ // Do housekeeping on this account
+ HousekeepStoreAccount housekeeping(rAccount.GetID(), rootDir,
+ discSet, NULL);
+ housekeeping.DoHousekeeping(true /* keep trying forever */);
+}
+
+int test_server(const char *hostname)
+{
+ TLSContext context;
+ std::auto_ptr<SocketStreamTLS> conn = open_conn(hostname, context);
+ std::auto_ptr<BackupProtocolClient> apProtocol(
+ test_server_login(*conn));
+ BackupProtocolClient& protocol(*apProtocol);
// Make some test attributes
#define ATTR1_SIZE 245
@@ -911,33 +972,17 @@ int test_server(const char *hostname)
// BLOCK
{
- // Open a connection to the server
- SocketStreamTLS conn;
- conn.Open(context, Socket::TypeINET, hostname, BOX_PORT_BBSTORED);
-
- // Make a protocol
- BackupProtocolClient protocol(conn);
-
// Get it logging
FILE *protocolLog = ::fopen("testfiles/protocol.log", "w");
TEST_THAT(protocolLog != 0);
protocol.SetLogToFile(protocolLog);
- // Check the version
- std::auto_ptr<BackupProtocolClientVersion> serverVersion(protocol.QueryVersion(BACKUP_STORE_SERVER_VERSION));
- TEST_THAT(serverVersion->GetVersion() == BACKUP_STORE_SERVER_VERSION);
-
- // Login
- std::auto_ptr<BackupProtocolClientLoginConfirmed> loginConf(protocol.QueryLogin(0x01234567, 0));
-
- // Check marker is 0
- TEST_THAT(loginConf->GetClientStoreMarker() == 0);
-
#ifndef WIN32
// Check that we can't open a new connection which requests write permissions
{
SocketStreamTLS conn;
- conn.Open(context, Socket::TypeINET, hostname, BOX_PORT_BBSTORED);
+ conn.Open(context, Socket::TypeINET, hostname,
+ BOX_PORT_BBSTORED_TEST);
BackupProtocolClient protocol(conn);
std::auto_ptr<BackupProtocolClientVersion> serverVersion(protocol.QueryVersion(BACKUP_STORE_SERVER_VERSION));
TEST_THAT(serverVersion->GetVersion() == BACKUP_STORE_SERVER_VERSION);
@@ -953,7 +998,8 @@ int test_server(const char *hostname)
#ifndef WIN32
// Open a new connection which is read only
SocketStreamTLS connReadOnly;
- connReadOnly.Open(context, Socket::TypeINET, hostname, BOX_PORT_BBSTORED);
+ connReadOnly.Open(context, Socket::TypeINET, hostname,
+ BOX_PORT_BBSTORED_TEST);
BackupProtocolClient protocolReadOnly(connReadOnly);
// Get it logging
@@ -1001,6 +1047,10 @@ int test_server(const char *hostname)
uploads[t].allocated_objid = stored->GetObjectID();
uploads[t].mod_time = modtime;
if(maxID < stored->GetObjectID()) maxID = stored->GetObjectID();
+ set_refcount(stored->GetObjectID(), 1);
+ BOX_TRACE("wrote file " << filename << " to server "
+ "as object " <<
+ BOX_FORMAT_OBJECTID(stored->GetObjectID()));
}
// Add some attributes onto one of them
@@ -1121,6 +1171,9 @@ int test_server(const char *hostname)
if(maxID < stored->GetObjectID()) maxID = stored->GetObjectID();
patchedID = stored->GetObjectID();
}
+
+ set_refcount(patchedID, 1);
+
// Then download it to check it's OK
std::auto_ptr<BackupProtocolClientSuccess> getFile(protocol.QueryGetFile(BackupProtocolClientListDirectory::RootDirectory, patchedID));
TEST_THAT(getFile->GetObjectID() == patchedID);
@@ -1142,6 +1195,9 @@ int test_server(const char *hostname)
subdirid = dirCreate->GetObjectID();
TEST_THAT(subdirid == maxID + 1);
}
+
+ set_refcount(subdirid, 1);
+
// Stick a file in it
int64_t subdirfileid = 0;
{
@@ -1159,6 +1215,8 @@ int test_server(const char *hostname)
subdirfileid = stored->GetObjectID();
}
+ set_refcount(subdirfileid, 1);
+
printf("\n==== Checking upload using read-only connection\n");
// Check the directories on the read only connection
{
@@ -1382,6 +1440,9 @@ int test_server(const char *hostname)
subsubfileid = stored->GetObjectID();
}
+ set_refcount(subsubdirid, 1);
+ set_refcount(subsubfileid, 1);
+
// Query names -- test that invalid stuff returns not found OK
{
std::auto_ptr<BackupProtocolClientObjectName> nameRep(protocol.QueryGetObjectName(3248972347823478927LL, subsubdirid));
@@ -1435,10 +1496,18 @@ int test_server(const char *hostname)
}
//} skip:
+
+ std::auto_ptr<BackupStoreAccountDatabase> apAccounts(
+ BackupStoreAccountDatabase::Read(
+ "testfiles/accounts.txt"));
+ std::auto_ptr<BackupStoreRefCountDatabase> apRefCount(
+ BackupStoreRefCountDatabase::Load(
+ apAccounts->GetEntry(0x1234567), true));
// Create some nice recursive directories
int64_t dirtodelete = create_test_data_subdirs(protocol,
- BackupProtocolClientListDirectory::RootDirectory, "test_delete", 6 /* depth */);
+ BackupProtocolClientListDirectory::RootDirectory,
+ "test_delete", 6 /* depth */, *apRefCount);
// And delete them
{
@@ -1731,7 +1800,8 @@ int test3(int argc, const char *argv[])
{
// Open a connection to the server
SocketStreamTLS conn;
- conn.Open(context, Socket::TypeINET, "localhost", BOX_PORT_BBSTORED);
+ conn.Open(context, Socket::TypeINET, "localhost",
+ BOX_PORT_BBSTORED_TEST);
// Make a protocol
BackupProtocolClient protocol(conn);
@@ -1760,10 +1830,78 @@ int test3(int argc, const char *argv[])
TEST_THAT(TestDirExists("testfiles/0_2/backup/01234567"));
TEST_THAT(TestGetFileSize("testfiles/accounts.txt") > 8);
// make sure something is written to it
+
+ std::auto_ptr<BackupStoreAccountDatabase> apAccounts(
+ BackupStoreAccountDatabase::Read("testfiles/accounts.txt"));
+
+ std::auto_ptr<BackupStoreRefCountDatabase> apReferences(
+ BackupStoreRefCountDatabase::Load(
+ apAccounts->GetEntry(0x1234567), true));
+ TEST_EQUAL(BACKUPSTORE_ROOT_DIRECTORY_ID,
+ apReferences->GetLastObjectIDUsed());
+ TEST_EQUAL(1, apReferences->GetRefCount(BACKUPSTORE_ROOT_DIRECTORY_ID))
+ apReferences.reset();
+
+ // Delete the refcount database and log in again,
+ // check that it is recreated automatically but with
+ // no objects in it, to ensure seamless upgrade.
+ TEST_EQUAL(0, ::unlink("testfiles/0_0/backup/01234567/refcount.db.rfw"));
+
+ TLSContext context;
+ std::auto_ptr<SocketStreamTLS> conn = open_conn("localhost",
+ context);
+ test_server_login(*conn)->QueryFinished();
+
+ BackupStoreAccountDatabase::Entry account =
+ apAccounts->GetEntry(0x1234567);
+ apReferences = BackupStoreRefCountDatabase::Load(account, true);
+ TEST_EQUAL(0, apReferences->GetLastObjectIDUsed());
TEST_THAT(ServerIsAlive(pid));
+ run_housekeeping(account);
+
+ // Check that housekeeping fixed the ref counts
+ TEST_EQUAL(BACKUPSTORE_ROOT_DIRECTORY_ID,
+ apReferences->GetLastObjectIDUsed());
+ TEST_EQUAL(1, apReferences->GetRefCount(BACKUPSTORE_ROOT_DIRECTORY_ID))
+
+ TEST_THAT(ServerIsAlive(pid));
+
+ set_refcount(BACKUPSTORE_ROOT_DIRECTORY_ID, 1);
+
TEST_THAT(test_server("localhost") == 0);
+
+ // test that all object reference counts have the
+ // expected values
+ TEST_EQUAL(ExpectedRefCounts.size() - 1,
+ apReferences->GetLastObjectIDUsed());
+ for (unsigned int i = BACKUPSTORE_ROOT_DIRECTORY_ID;
+ i < ExpectedRefCounts.size(); i++)
+ {
+ TEST_EQUAL_LINE(ExpectedRefCounts[i],
+ apReferences->GetRefCount(i),
+ "object " << BOX_FORMAT_OBJECTID(i));
+ }
+
+ // Delete the refcount database again, and let
+ // housekeeping recreate it and fix the ref counts.
+ // This could also happen after upgrade, if a housekeeping
+ // runs before the user logs in.
+ apReferences.reset();
+ TEST_EQUAL(0, ::unlink("testfiles/0_0/backup/01234567/refcount.db.rfw"));
+ run_housekeeping(account);
+ apReferences = BackupStoreRefCountDatabase::Load(account, true);
+
+ TEST_EQUAL(ExpectedRefCounts.size() - 1,
+ apReferences->GetLastObjectIDUsed());
+ for (unsigned int i = BACKUPSTORE_ROOT_DIRECTORY_ID;
+ i < ExpectedRefCounts.size(); i++)
+ {
+ TEST_EQUAL_LINE(ExpectedRefCounts[i],
+ apReferences->GetRefCount(i),
+ "object " << BOX_FORMAT_OBJECTID(i));
+ }
// Test the deletion of objects by the housekeeping system
// First, things as they are now.
@@ -1832,7 +1970,8 @@ int test3(int argc, const char *argv[])
{
// Open a connection to the server
SocketStreamTLS conn;
- conn.Open(context, Socket::TypeINET, "localhost", BOX_PORT_BBSTORED);
+ conn.Open(context, Socket::TypeINET, "localhost",
+ BOX_PORT_BBSTORED_TEST);
// Make a protocol
BackupProtocolClient protocol(conn);
diff --git a/test/backupstore/testfiles/bbstored.conf b/test/backupstore/testfiles/bbstored.conf
index 4862033b..460b9d59 100644
--- a/test/backupstore/testfiles/bbstored.conf
+++ b/test/backupstore/testfiles/bbstored.conf
@@ -9,7 +9,7 @@ TimeBetweenHousekeeping = 10
Server
{
PidFile = testfiles/bbstored.pid
- ListenAddresses = inet:localhost
+ ListenAddresses = inet:localhost:22011
CertificateFile = testfiles/serverCerts.pem
PrivateKeyFile = testfiles/serverPrivKey.pem
TrustedCAsFile = testfiles/serverTrustedCAs.pem
diff --git a/test/backupstorepatch/testbackupstorepatch.cpp b/test/backupstorepatch/testbackupstorepatch.cpp
index 23b01b15..2510da30 100644
--- a/test/backupstorepatch/testbackupstorepatch.cpp
+++ b/test/backupstorepatch/testbackupstorepatch.cpp
@@ -13,29 +13,33 @@
#include <string.h>
#include <signal.h>
-#include "Test.h"
#include "autogen_BackupProtocolClient.h"
-#include "SSLLib.h"
-#include "TLSContext.h"
-#include "SocketStreamTLS.h"
-#include "BoxPortsAndFiles.h"
+#include "BackupClientCryptoKeys.h"
+#include "BackupClientFileAttributes.h"
+#include "BackupStoreAccountDatabase.h"
+#include "BackupStoreAccounts.h"
#include "BackupStoreConstants.h"
-#include "Socket.h"
-#include "BackupStoreFilenameClear.h"
-#include "CollectInBufferStream.h"
#include "BackupStoreDirectory.h"
+#include "BackupStoreException.h"
#include "BackupStoreFile.h"
+#include "BackupStoreFilenameClear.h"
+#include "BackupStoreInfo.h"
+#include "BoxPortsAndFiles.h"
+#include "CollectInBufferStream.h"
#include "FileStream.h"
+#include "MemBlockStream.h"
#include "RaidFileController.h"
+#include "RaidFileException.h"
#include "RaidFileRead.h"
+#include "RaidFileUtil.h"
#include "RaidFileWrite.h"
-#include "BackupStoreInfo.h"
-#include "BackupStoreException.h"
-#include "RaidFileException.h"
-#include "MemBlockStream.h"
-#include "BackupClientFileAttributes.h"
-#include "BackupClientCryptoKeys.h"
+#include "SSLLib.h"
#include "ServerControl.h"
+#include "Socket.h"
+#include "SocketStreamTLS.h"
+#include "StoreStructure.h"
+#include "TLSContext.h"
+#include "Test.h"
#include "MemLeakFindOn.h"
@@ -320,8 +324,17 @@ int test(int argc, const char *argv[])
// Check the basic directory stuff works
test_depends_in_dirs();
+
+ std::string storeRootDir;
+ int discSet = 0;
+ {
+ std::auto_ptr<BackupStoreAccountDatabase> apDatabase(
+ BackupStoreAccountDatabase::Read("testfiles/accounts.txt"));
+ BackupStoreAccounts accounts(*apDatabase);
+ accounts.GetAccountRoot(0x1234567, storeRootDir, discSet);
+ }
+ RaidFileDiscSet rfd(rcontroller.GetDiscSet(discSet));
- // First, try logging in without an account having been created... just make sure login fails.
int pid = LaunchServer(BBSTORED " testfiles/bbstored.conf",
"testfiles/bbstored.pid");
TEST_THAT(pid != -1 && pid != 0);
@@ -332,7 +345,8 @@ int test(int argc, const char *argv[])
{
// Open a connection to the server
SocketStreamTLS conn;
- conn.Open(context, Socket::TypeINET, "localhost", BOX_PORT_BBSTORED);
+ conn.Open(context, Socket::TypeINET, "localhost",
+ BOX_PORT_BBSTORED_TEST);
// Make a protocol
BackupProtocolClient protocol(conn);
@@ -477,6 +491,19 @@ int test(int argc, const char *argv[])
if(en == 0)
{
TEST_THAT(test_files[f].HasBeenDeleted);
+ // check that unreferenced
+ // object was removed by
+ // housekeeping
+ std::string filenameOut;
+ int startDisc = 0;
+ StoreStructure::MakeObjectFilename(
+ test_files[f].IDOnServer,
+ storeRootDir, discSet,
+ filenameOut,
+ false /* don't bother ensuring the directory exists */);
+ TEST_EQUAL(RaidFileUtil::NoFile,
+ RaidFileUtil::RaidFileExists(
+ rfd, filenameOut));
}
else
{
@@ -500,7 +527,8 @@ int test(int argc, const char *argv[])
// Open a connection to the server (need to do this each time, otherwise housekeeping won't delete files)
SocketStreamTLS conn;
- conn.Open(context, Socket::TypeINET, "localhost", BOX_PORT_BBSTORED);
+ conn.Open(context, Socket::TypeINET, "localhost",
+ BOX_PORT_BBSTORED_TEST);
BackupProtocolClient protocol(conn);
{
std::auto_ptr<BackupProtocolClientVersion> serverVersion(protocol.QueryVersion(BACKUP_STORE_SERVER_VERSION));
diff --git a/test/basicserver/Makefile.extra b/test/basicserver/Makefile.extra
index 3feda961..50120136 100644
--- a/test/basicserver/Makefile.extra
+++ b/test/basicserver/Makefile.extra
@@ -6,16 +6,16 @@ GEN_CMD_CLI = $(MAKEPROTOCOL) Client testprotocol.txt
# AUTOGEN SEEDING
autogen_TestProtocolServer.cpp: $(MAKEPROTOCOL) testprotocol.txt
- $(PERL) $(GEN_CMD_SRV)
+ $(_PERL) $(GEN_CMD_SRV)
autogen_TestProtocolServer.h: $(MAKEPROTOCOL) testprotocol.txt
- $(PERL) $(GEN_CMD_SRV)
+ $(_PERL) $(GEN_CMD_SRV)
# AUTOGEN SEEDING
autogen_TestProtocolClient.cpp: $(MAKEPROTOCOL) testprotocol.txt
- $(PERL) $(GEN_CMD_CLI)
+ $(_PERL) $(GEN_CMD_CLI)
autogen_TestProtocolClient.h: $(MAKEPROTOCOL) testprotocol.txt
- $(PERL) $(GEN_CMD_CLI)
+ $(_PERL) $(GEN_CMD_CLI)
diff --git a/test/bbackupd/testbbackupd.cpp b/test/bbackupd/testbbackupd.cpp
index 91c883cc..32f3c176 100644
--- a/test/bbackupd/testbbackupd.cpp
+++ b/test/bbackupd/testbbackupd.cpp
@@ -87,7 +87,7 @@
// two cycles and a bit
#define TIME_TO_WAIT_FOR_BACKUP_OPERATION 12
-void wait_for_backup_operation(char* message)
+void wait_for_backup_operation(const char* message)
{
wait_for_operation(TIME_TO_WAIT_FOR_BACKUP_OPERATION, message);
}
@@ -2443,10 +2443,10 @@ int test_bbackupd()
// next poll should happen within the next
// 5 seconds (normally about 3 seconds)
- safe_sleep(1); // 2 seconds before
+ wait_for_operation(1, "2 seconds before next run");
TEST_THAT(stat("testfiles" DIRECTORY_SEPARATOR
"syncallowscript.notifyran.1", &st) != 0);
- safe_sleep(4); // 2 seconds after
+ wait_for_operation(4, "2 seconds after run");
TEST_THAT(stat("testfiles" DIRECTORY_SEPARATOR
"syncallowscript.notifyran.1", &st) == 0);
TEST_THAT(stat("testfiles" DIRECTORY_SEPARATOR
@@ -2455,10 +2455,10 @@ int test_bbackupd()
// next poll should happen within the next
// 10 seconds (normally about 8 seconds)
- safe_sleep(6); // 2 seconds before
+ wait_for_operation(6, "2 seconds before next run");
TEST_THAT(stat("testfiles" DIRECTORY_SEPARATOR
"syncallowscript.notifyran.2", &st) != 0);
- safe_sleep(4); // 2 seconds after
+ wait_for_operation(4, "2 seconds after run");
TEST_THAT(stat("testfiles" DIRECTORY_SEPARATOR
"syncallowscript.notifyran.2", &st) == 0);
@@ -2481,9 +2481,14 @@ int test_bbackupd()
long end_time = time(NULL);
long wait_time = end_time - start_time + 2;
+
// should be about 10 seconds
- printf("Waited for %ld seconds, should have been %s",
- wait_time, control_string);
+ if (wait_time < 8 || wait_time > 12)
+ {
+ printf("Waited for %ld seconds, should have "
+ "been %s", wait_time, control_string);
+ }
+
TEST_THAT(wait_time >= 8);
TEST_THAT(wait_time <= 12);
diff --git a/test/bbackupd/testfiles/extcheck1.pl.in b/test/bbackupd/testfiles/extcheck1.pl.in
index 74884dd8..5b70c677 100755
--- a/test/bbackupd/testfiles/extcheck1.pl.in
+++ b/test/bbackupd/testfiles/extcheck1.pl.in
@@ -8,7 +8,7 @@ unless(open IN,"../../bin/bbackupquery/bbackupquery -Wwarning " .
"-l testfiles/query4.log " .
"\"compare -ac$flags\" quit 2>&1 |")
{
- print "Couldn't open compare utility\n";
+ print "FAIL: opening compare utility\n";
exit 2;
}
@@ -48,7 +48,11 @@ while(<IN>)
close IN;
-$ret = 2 unless $seen;
+unless ($seen)
+{
+ print "FAIL: missing line matching continousupdate\n";
+ $ret = 2;
+}
exit $ret;
diff --git a/test/common/testcommon.cpp b/test/common/testcommon.cpp
index da2133cd..e633969b 100644
--- a/test/common/testcommon.cpp
+++ b/test/common/testcommon.cpp
@@ -368,7 +368,7 @@ int test(int argc, const char *argv[])
// Leave timers initialised for rest of test.
// Test main() will cleanup after test finishes.
- static char *testfilelines[] =
+ static const char *testfilelines[] =
{
"First line",
"Second line",
diff --git a/test/httpserver/testfiles/s3simulator.conf b/test/httpserver/testfiles/s3simulator.conf
new file mode 100644
index 00000000..07921560
--- /dev/null
+++ b/test/httpserver/testfiles/s3simulator.conf
@@ -0,0 +1,10 @@
+AccessKey = 0PN5J17HBGZHT7JJ3X82
+SecretKey = uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o
+StoreDirectory = testfiles
+AddressPrefix = http://localhost:1080
+
+Server
+{
+ PidFile = testfiles/s3simulator.pid
+ ListenAddresses = inet:localhost:1080
+}
diff --git a/test/httpserver/testhttpserver.cpp b/test/httpserver/testhttpserver.cpp
index 6c0de9a9..160cb32f 100644
--- a/test/httpserver/testhttpserver.cpp
+++ b/test/httpserver/testhttpserver.cpp
@@ -26,6 +26,7 @@
#include "HTTPServer.h"
#include "IOStreamGetLine.h"
#include "S3Client.h"
+#include "S3Simulator.h"
#include "ServerControl.h"
#include "Test.h"
#include "decode.h"
@@ -125,213 +126,6 @@ void TestWebServer::Handle(HTTPRequest &rRequest, HTTPResponse &rResponse)
TestWebServer::TestWebServer() {}
TestWebServer::~TestWebServer() {}
-class S3Simulator : public HTTPServer
-{
-public:
- S3Simulator() { }
- ~S3Simulator() { }
-
- virtual void Handle(HTTPRequest &rRequest, HTTPResponse &rResponse);
- virtual void HandleGet(HTTPRequest &rRequest, HTTPResponse &rResponse);
- virtual void HandlePut(HTTPRequest &rRequest, HTTPResponse &rResponse);
-};
-
-void S3Simulator::Handle(HTTPRequest &rRequest, HTTPResponse &rResponse)
-{
- // if anything goes wrong, return a 500 error
- rResponse.SetResponseCode(HTTPResponse::Code_InternalServerError);
- rResponse.SetContentType("text/plain");
-
- try
- {
- // http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAuthentication.html
- std::string access_key = "0PN5J17HBGZHT7JJ3X82";
- std::string secret_key = "uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o";
-
- std::string md5, date, bucket;
- rRequest.GetHeader("Content-MD5", &md5);
- rRequest.GetHeader("Date", &date);
-
- std::string host = rRequest.GetHostName();
- std::string s3suffix = ".s3.amazonaws.com";
- if (host.size() > s3suffix.size())
- {
- std::string suffix = host.substr(host.size() -
- s3suffix.size(), s3suffix.size());
- if (suffix == s3suffix)
- {
- bucket = host.substr(0, host.size() -
- s3suffix.size());
- }
- }
-
- std::ostringstream data;
- data << rRequest.GetVerb() << "\n";
- data << md5 << "\n";
- data << rRequest.GetContentType() << "\n";
- data << date << "\n";
-
- std::vector<HTTPRequest::Header> headers = rRequest.GetHeaders();
-
- for (std::vector<HTTPRequest::Header>::iterator
- i = headers.begin(); i != headers.end(); i++)
- {
- std::string& rHeaderName = i->first;
-
- for (std::string::iterator c = rHeaderName.begin();
- c != rHeaderName.end() && *c != ':'; c++)
- {
- *c = tolower(*c);
- }
- }
-
- sort(headers.begin(), headers.end());
-
- for (std::vector<HTTPRequest::Header>::iterator
- i = headers.begin(); i != headers.end(); i++)
- {
- if (i->first.substr(0, 5) == "x-amz")
- {
- data << i->first << ":" << i->second << "\n";
- }
- }
-
- if (! bucket.empty())
- {
- data << "/" << bucket;
- }
-
- data << rRequest.GetRequestURI();
- std::string data_string = data.str();
-
- unsigned char digest_buffer[EVP_MAX_MD_SIZE];
- unsigned int digest_size = sizeof(digest_buffer);
- /* unsigned char* mac = */ HMAC(EVP_sha1(),
- secret_key.c_str(), secret_key.size(),
- (const unsigned char*)data_string.c_str(),
- data_string.size(), digest_buffer, &digest_size);
- std::string digest((const char *)digest_buffer, digest_size);
-
- base64::encoder encoder;
- std::string expectedAuth = "AWS " + access_key + ":" +
- encoder.encode(digest);
-
- if (expectedAuth[expectedAuth.size() - 1] == '\n')
- {
- expectedAuth = expectedAuth.substr(0,
- expectedAuth.size() - 1);
- }
-
- std::string actualAuth;
- if (!rRequest.GetHeader("Authorization", &actualAuth) ||
- actualAuth != expectedAuth)
- {
- rResponse.SetResponseCode(HTTPResponse::Code_Unauthorized);
- }
- else if (rRequest.GetMethod() == HTTPRequest::Method_GET)
- {
- HandleGet(rRequest, rResponse);
- }
- else if (rRequest.GetMethod() == HTTPRequest::Method_PUT)
- {
- HandlePut(rRequest, rResponse);
- }
- else
- {
- rResponse.SetResponseCode(HTTPResponse::Code_MethodNotAllowed);
- }
- }
- catch (CommonException &ce)
- {
- rResponse.IOStream::Write(ce.what());
- }
- catch (std::exception &e)
- {
- rResponse.IOStream::Write(e.what());
- }
- catch (...)
- {
- rResponse.IOStream::Write("Unknown error");
- }
-
- return;
-}
-
-void S3Simulator::HandleGet(HTTPRequest &rRequest, HTTPResponse &rResponse)
-{
- std::string path = "testfiles";
- path += rRequest.GetRequestURI();
- std::auto_ptr<FileStream> apFile;
-
- try
- {
- apFile.reset(new FileStream(path));
- }
- catch (CommonException &ce)
- {
- if (ce.GetSubType() == CommonException::OSFileOpenError)
- {
- rResponse.SetResponseCode(HTTPResponse::Code_NotFound);
- }
- else if (ce.GetSubType() == CommonException::AccessDenied)
- {
- rResponse.SetResponseCode(HTTPResponse::Code_Forbidden);
- }
- throw;
- }
-
- // http://docs.amazonwebservices.com/AmazonS3/2006-03-01/UsingRESTOperations.html
- apFile->CopyStreamTo(rResponse);
- rResponse.AddHeader("x-amz-id-2", "qBmKRcEWBBhH6XAqsKU/eg24V3jf/kWKN9dJip1L/FpbYr9FDy7wWFurfdQOEMcY");
- rResponse.AddHeader("x-amz-request-id", "F2A8CCCA26B4B26D");
- rResponse.AddHeader("Date", "Wed, 01 Mar 2006 12:00:00 GMT");
- rResponse.AddHeader("Last-Modified", "Sun, 1 Jan 2006 12:00:00 GMT");
- rResponse.AddHeader("ETag", "\"828ef3fdfa96f00ad9f27c383fc9ac7f\"");
- rResponse.AddHeader("Server", "AmazonS3");
- rResponse.SetResponseCode(HTTPResponse::Code_OK);
-}
-
-void S3Simulator::HandlePut(HTTPRequest &rRequest, HTTPResponse &rResponse)
-{
- std::string path = "testfiles";
- path += rRequest.GetRequestURI();
- std::auto_ptr<FileStream> apFile;
-
- try
- {
- apFile.reset(new FileStream(path, O_CREAT | O_WRONLY));
- }
- catch (CommonException &ce)
- {
- if (ce.GetSubType() == CommonException::OSFileOpenError)
- {
- rResponse.SetResponseCode(HTTPResponse::Code_NotFound);
- }
- else if (ce.GetSubType() == CommonException::AccessDenied)
- {
- rResponse.SetResponseCode(HTTPResponse::Code_Forbidden);
- }
- throw;
- }
-
- if (rRequest.IsExpectingContinue())
- {
- rResponse.SendContinue();
- }
-
- rRequest.ReadContent(*apFile);
-
- // http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTObjectPUT.html
- rResponse.AddHeader("x-amz-id-2", "LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7");
- rResponse.AddHeader("x-amz-request-id", "F2A8CCCA26B4B26D");
- rResponse.AddHeader("Date", "Wed, 01 Mar 2006 12:00:00 GMT");
- rResponse.AddHeader("Last-Modified", "Sun, 1 Jan 2006 12:00:00 GMT");
- rResponse.AddHeader("ETag", "\"828ef3fdfa96f00ad9f27c383fc9ac7f\"");
- rResponse.SetContentType("");
- rResponse.AddHeader("Server", "AmazonS3");
- rResponse.SetResponseCode(HTTPResponse::Code_OK);
-}
-
int test(int argc, const char *argv[])
{
if(argc >= 2 && ::strcmp(argv[1], "server") == 0)
@@ -444,18 +238,24 @@ int test(int argc, const char *argv[])
// Kill it
TEST_THAT(KillServer(pid));
- TestRemoteProcessMemLeaks("generic-httpserver.memleaks");
- // correct, official signature should succeed
+ #ifdef WIN32
+ TEST_THAT(unlink("testfiles/httpserver.pid") == 0);
+ #else
+ TestRemoteProcessMemLeaks("generic-httpserver.memleaks");
+ #endif
+
+ // correct, official signature should succeed, with lower-case header
{
// http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAuthentication.html
HTTPRequest request(HTTPRequest::Method_GET, "/photos/puppy.jpg");
request.SetHostName("johnsmith.s3.amazonaws.com");
- request.AddHeader("Date", "Tue, 27 Mar 2007 19:36:42 +0000");
- request.AddHeader("Authorization",
+ request.AddHeader("date", "Tue, 27 Mar 2007 19:36:42 +0000");
+ request.AddHeader("authorization",
"AWS 0PN5J17HBGZHT7JJ3X82:xXjDGYUmKxnwqr5KXNPGldn5LbA=");
S3Simulator simulator;
+ simulator.Configure("testfiles/s3simulator.conf");
CollectInBufferStream response_buffer;
HTTPResponse response(&response_buffer);
@@ -473,11 +273,12 @@ int test(int argc, const char *argv[])
// http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAuthentication.html
HTTPRequest request(HTTPRequest::Method_GET, "/photos/puppy.jpg");
request.SetHostName("johnsmith.s3.amazonaws.com");
- request.AddHeader("Date", "Tue, 27 Mar 2007 19:36:42 +0000");
- request.AddHeader("Authorization",
+ request.AddHeader("date", "Tue, 27 Mar 2007 19:36:42 +0000");
+ request.AddHeader("authorization",
"AWS 0PN5J17HBGZHT7JJ3X82:xXjDGYUmKxnwqr5KXNPGldn5LbB=");
S3Simulator simulator;
+ simulator.Configure("testfiles/s3simulator.conf");
CollectInBufferStream response_buffer;
HTTPResponse response(&response_buffer);
@@ -487,12 +288,19 @@ int test(int argc, const char *argv[])
std::string response_data((const char *)response.GetBuffer(),
response.GetSize());
- TEST_EQUAL("", response_data);
+ TEST_EQUAL("<html><head>"
+ "<title>Internal Server Error</title></head>\n"
+ "<h1>Internal Server Error</h1>\n"
+ "<p>An error, type Authentication Failed occured "
+ "when processing the request.</p>"
+ "<p>Please try again later.</p></body>\n"
+ "</html>\n", response_data);
}
// S3Client tests
{
S3Simulator simulator;
+ simulator.Configure("testfiles/s3simulator.conf");
S3Client client(&simulator, "johnsmith.s3.amazonaws.com",
"0PN5J17HBGZHT7JJ3X82",
"uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o");
@@ -527,8 +335,8 @@ int test(int argc, const char *argv[])
HTTPRequest request(HTTPRequest::Method_PUT,
"/newfile");
request.SetHostName("quotes.s3.amazonaws.com");
- request.AddHeader("Date", "Wed, 01 Mar 2006 12:00:00 GMT");
- request.AddHeader("Authorization", "AWS 0PN5J17HBGZHT7JJ3X82:XtMYZf0hdOo4TdPYQknZk0Lz7rw=");
+ request.AddHeader("date", "Wed, 01 Mar 2006 12:00:00 GMT");
+ request.AddHeader("authorization", "AWS 0PN5J17HBGZHT7JJ3X82:XtMYZf0hdOo4TdPYQknZk0Lz7rw=");
request.AddHeader("Content-Type", "text/plain");
FileStream fs("testfiles/testrequests.pl");
@@ -539,6 +347,7 @@ int test(int argc, const char *argv[])
HTTPResponse response(&response_buffer);
S3Simulator simulator;
+ simulator.Configure("testfiles/s3simulator.conf");
simulator.Handle(request, response);
TEST_EQUAL(200, response.GetResponseCode());
@@ -558,8 +367,8 @@ int test(int argc, const char *argv[])
}
// Start the S3Simulator server
- pid = LaunchServer("./test s3server testfiles/httpserver.conf",
- "testfiles/httpserver.pid");
+ pid = LaunchServer("./test s3server testfiles/s3simulator.conf",
+ "testfiles/s3simulator.pid");
TEST_THAT(pid != -1 && pid != 0);
if(pid <= 0)
{
@@ -583,6 +392,7 @@ int test(int argc, const char *argv[])
TEST_EQUAL(404, response.GetResponseCode());
}
+ #ifndef WIN32 // much harder to make files inaccessible on WIN32
// Make file inaccessible, should cause server to return a 403 error,
// unless of course the test is run as root :)
{
@@ -601,6 +411,7 @@ int test(int argc, const char *argv[])
TEST_EQUAL(403, response.GetResponseCode());
TEST_THAT(chmod("testfiles/testrequests.pl", 0755) == 0);
}
+ #endif
{
HTTPRequest request(HTTPRequest::Method_GET,
@@ -657,7 +468,12 @@ int test(int argc, const char *argv[])
// Kill it
TEST_THAT(KillServer(pid));
- TestRemoteProcessMemLeaks("generic-httpserver.memleaks");
+
+ #ifdef WIN32
+ TEST_THAT(unlink("testfiles/s3simulator.pid") == 0);
+ #else
+ TestRemoteProcessMemLeaks("generic-httpserver.memleaks");
+ #endif
return 0;
}
diff --git a/test/raidfile/testraidfile.cpp b/test/raidfile/testraidfile.cpp
index f15fec27..160de5c9 100644
--- a/test/raidfile/testraidfile.cpp
+++ b/test/raidfile/testraidfile.cpp
@@ -11,6 +11,7 @@
#include <fcntl.h>
#include <unistd.h>
+#include <stdio.h>
#include <errno.h>
#ifdef HAVE_SYSCALL
@@ -626,6 +627,30 @@ int test(int argc, const char *argv[])
"', '" << n3);
}
+ // Test that creating and deleting a RaidFile with the wrong
+ // reference counts throws the expected errors.
+ {
+ RaidFileWrite write1(0, "write1", 1);
+ write1.Open();
+ write1.Commit();
+ TEST_CHECK_THROWS(write1.Delete(), RaidFileException,
+ RequestedDeleteReferencedFile);
+ }
+
+ {
+ RaidFileWrite write1(0, "write1", 0);
+ write1.Open(true);
+ TEST_CHECK_THROWS(write1.Commit(), RaidFileException,
+ RequestedModifyUnreferencedFile);
+ write1.Delete();
+ }
+
+ {
+ TEST_CHECK_THROWS(RaidFileWrite write1(0, "write1", 2),
+ RaidFileException,
+ RequestedModifyMultiplyReferencedFile);
+ }
+
// Create a RaidFile
RaidFileWrite write1(0, "test1");
IOStream &write1stream = write1; // use the stream interface where possible